Оценить:
 Рейтинг: 3.5

Java за неделю. Вводный курс

Год написания книги
2018
<< 1 ... 19 20 21 22 23 24 25 >>
На страницу:
23 из 25
Настройки чтения
Размер шрифта
Высота строк
Поля

MyClass.showText ();

}

}

В данном примере мы описали класс с закрытым статическим полем text. Поскольку поле закрытое, мы не можем обратиться к нему извне через имя класса с точкой, как это было в листинге 6.6. Для работы с полем мы описали два открытых статических метода, showText () и setText ().

В главном классе программы сначала мы выводим содержимое поля на печать при помощи метода showText (). Затем модифицируем значение поля при помощи метода setText () и вновь выводим содержимое поля на печать, чтобы убедиться, что оно изменилось.

Ключевое слово public

При описании открытых членов класса можно использовать ключевое слово public, которое определяет уровень доступа. Во всех предыдущих примерах открытые члены класса были описаны без ключевого слова public (конструкция по умолчанию). В таком случае их доступность ограничивается текущим пакетом, и этого достаточно для простых программ. Если открытый член класса описан с идентификатором доступа public, то он доступен также и в других пакетах.

Глава 7. Наследование

Наследование – это один из ключевых принципов объектно-ориентированного программирования. Идея наследования проста: при описании нового класса мы берем за основу существующий класс, его поля и методы.

Исходный класс называется суперклассом или родительским классом (parent class). Класс, созданный на основе суперкласса, называется подклассом или дочерним классом (child class).

Подкласс наследует у суперкласса все его открытые поля и методы. Допускается каскадное или многократное наследование, то есть подкласс сам может быть суперклассом по отношению к созданным на его основе подклассам.

Суперкласс может быть пользовательским или библиотечным. Пользовательский суперкласс описан непосредственно в программе пользователя. Библиотечный суперкласс описан в одной из библиотек. Это могут быть как стандартные библиотеки языка Java, так и подключаемые библиотеки сторонних разработчиков.

Почему удобнее создавать подклассы, а не ограничиваться использованием уже имеющихся классов? Зачастую оказывается, что функциональности готового суперкласса недостаточно для выполнения регулярно вызываемого действия в программе. Подкласс расширяет возможности суперкласса за счет добавления новых полей и методов. При вызове стандартных методов библиотечного класса могут использоваться громоздкие наборы аргументов, которые сами по себе требуют предварительной обработки. В таком случае удобнее «упаковать» обработку данных и обращение к стандартным методам внутрь подкласса. Кроме того, при использовании библиотечных классов из пакета поставки Java не предусмотрена возможность свободно редактировать их по своему усмотрению. Единственный разумный подход – описать в программе собственный наследующий класс и дорабатывать его, не рискуя испортить стандартные библиотеки.

Если говорить о готовом коде, то наследование значительно улучшает общую структуру, читаемость и надежность программы.

В языке Java запрещено множественное наследование. Подкласс может наследовать поля и методы только у одного суперкласса. В некоторых других языках, включая С++, подкласс может наследовать одновременно несколько суперклассов.

7.1 Создание подкласса

Для создания подкласса необходимо после его имени указать ключевое слово extends (расширяет) и далее указать имя суперкласса:

class ChildClass extends ParentClass {

// поля и методы подкласса

}

В результате подкласс ChildClass будет иметь те же поля и методы, что и суперкласс ParentClass, но к ним добавятся еще поля и методы из описания подкласса.

Объекты, созданные на основе подкласса, не зависят от объектов, созданных на основе суперкласса, и никак не влияют друг на друга.

В листинге 7.1 приведен пример использования суперкласса и подкласса для создания независимых объектов, обладающих разным набором методов.

Листинг 7.1 Создание подкласса на основе пользовательского суперкласса

// описание суперкласса

class MyParentClass {

// числовое поле суперкласса

int number=5;

// текстовое поле суперкласса

String text=«Hello»;

// методы суперкласса

void showText () {

System.out.println (text);

}

void showNumber () {

System.out.println (number);

}

}

// описание подкласса

class MyChildClass extends MyParentClass {

int sum (int a) {

return number+a;

}

}

public class Listing7_1 {

public static void main (String [] args) {

// создаем объект суперкласса

MyParentClass objParent=new MyParentClass ();

// создаем объект подкласса

MyChildClass objChild=new MyChildClass ();
<< 1 ... 19 20 21 22 23 24 25 >>
На страницу:
23 из 25