Java руководство для начинающих - Шилдт Герберт (2012)
-
Год:2012
-
Название:Java руководство для начинающих
-
Автор:
-
Жанр:
-
Оригинал:Английский
-
Язык:Русский
-
Издательство:Вильямс
-
Страниц:316
-
ISBN:978-5-8459-1770-6
-
Рейтинг:
-
Ваша оценка:
Java руководство для начинающих - Шилдт Герберт читать онлайн бесплатно полную версию книги
Для того чтобы определить набор общедоступных констант, достаточно создать интерфейс, в котором объявлялись бы не методы, а только нужные константы. Каждый класс, которому требуются эти константы, должен просто “реализовать” интерфейс, чтобы сделать константы доступными. Ниже приведен несложный пример, демонстрирующий такой подход.
// Интерфейс, содержащий только константы,
interface IConst {
// Константы,
int MIN = 0;
int MAX = 10;
String ERRORMSG = "Boundary Error";
}
class IGonstD implements IConst {
public static void main(String args[]) {
int nums[] = new int[MAX];
for(int i=MIN; i < 11; i++) {
if(i >= MAX) System.out.println(ERRORMSG);
else {
nums[i] = i;
System.out.print(nums[i] + " ");
}
}
}
}
Наследование интерфейсов
Один интерфейс может наследовать другой интерфейс, для чего служит ключевое слово extends. Синтаксис наследования интерфейсов ничем не отличается от того, что употребляется для наследования классов. Если класс реализует один интерфейс, наследующий другой интерфейс, в нем следует определить все методы, объявленные в интерфейсах по всей цепочке наследования. Ниже приведен пример, демонстрирующий наследование интерфейсов.
// Наследование интерфейсов,
interface А {
void methl() ;
void meth2();
}
// Интерфейс В содержит методы methl() и meth2(), а
// кроме того, в него добавляется метод meth3().
interface В extends А { // Интерфейс В наследует интерфейс А.
void meth3();
}
// Этот класс должен реализовать все методы,
// объявленные в интерфейсах А и В.
class MyClass implements В {
public void methl() {
System.out.println("Implement methl().");
}
public void meth2() {
System.out.println("Implement meth2().");
}
public void meth3() {
System.out.println("Implement meth3() .") ;
}
}
class IFExtend {
public static void main(String arg[]) {
MyClass ob = new MyClass();
ob.methl();
ob.meth2() ;
ob.meth3() ;
}
}
В качестве эксперимента можно попробовать удалить из класса MyClass реализацию метода methl (). Это приведет к ошибке при компиляции. Как упоминалось выше, в каждом классе, реализующем интерфейс, должны быть определены все методы, объявленные в интерфейсе, в том числе те, которые были унаследованы от других интерфейсов.
И хотя пакеты и интерфейсы нечасто используются в примерах программ, представленных в этой книге, следует все же иметь в виду, что эти языковые средства являются важной частью Java. Практически во всех реальных программах и апплетах, написанных на Java, применяются пакеты, а многие классы реализуют интерфейсы. Поэтому эти языковые средства необходимо знать, чтобы уметь пользоваться ими в практике программирования на Java.
Упражнение для самопроверки по материалу главы 8
Используя код, созданный в примере для опробования 8.1, поместите в пакет qpack интерфейс iCharQ и все три реализующие его класса. Класс iQDemo должен остаться в пакете, используемом по умолчанию. Покажите, как импортировать и использовать классы из пакета qpack.
Что такое пространство имен? Почему так важна возможность его разделения на отдельные области в Java?
Содержимое пакетов хранится в _ .
В чем отличие доступа, определяемого ключевым словом protected, от доступа по умолчанию?
Допустим, классы, содержащиеся в одном пакете, требуется использовать в другом пакете. Какими двумя способами можно этого добиться?
“Один интерфейс — множество методов” — главный принцип Java. Какое языковое средство лучше всего демонстрирует этот принцип?