Java руководство для начинающих - Шилдт Герберт (2012)
-
Год:2012
-
Название:Java руководство для начинающих
-
Автор:
-
Жанр:
-
Оригинал:Английский
-
Язык:Русский
-
Издательство:Вильямс
-
Страниц:316
-
ISBN:978-5-8459-1770-6
-
Рейтинг:
-
Ваша оценка:
Java руководство для начинающих - Шилдт Герберт читать онлайн бесплатно полную версию книги
Triangle(double х) {
super(х); // вызвать конструктор суперкласса с одним аргументом
style = "isosceles"
}
double area() {
return getWidth() * getHeight() / 2;
}
void showStyle() {
System.out.println("Triangle is " + style);
}
}
class Shapes5 {
public static void main(String args[]) {
Triangle tl = new Triangle();
Triangle t2 = new Triangle("right", 8.0, 12.0);
Triangle t3 = new Triangle(4.0);
tl = t2;
System.out.println("Info for tl: ");
tl.showStyle();
tl.showDim();
System.out.println ("Area is " + tl.areaO);
System.out.println() ;
System.out.println("Info for t2: ");
t2.showStyle();
t2.showDim();
System.out.println("Area is " + t2.area());
System.out.println();
System.out.println("Info for t3: ");
t3.showStyle();
t3.showDim();
System.out.println("Area is " + t3.area());
System.out.println();
}
}
Выполнение этой версии программы дает следующий результат:
Info for tl:
Triangle is right
Width and height are 8.0 and 12.0
Area is 48.0
Info for t2:
Triangle is right
Width and height are 8.0 and 12.0
Area is 48.0
Info for t3:
Triangle is isosceles
Width and height are 4.0 and 4.0
Area is 8.0
Еще раз напомним основные свойства вызова конструктора super (). Когда этот вызов присутствует в конструкторе подкласса, происходит обращение к конструктору его непосредственного суперкласса. Таким образом, вызывается конструктор того класса, который непосредственно породил вызывающий класс. Это справедливо и при многоуровневой иерархии. Кроме того, вызов конструктора super () должен быть первым оператором в теле конструктора подкласса.
Применение ключевого слова super для доступа к членам суперкласса
Существует еще одна общая форма ключевого слова super, которая применяется подобно ключевому слову this, но ссылается на суперкласс данного класса. Эта общая форма обращения к члену суперкласса имеет следующий вид:
super.член_класса
где член_класса обозначает метод или переменную экземпляра.
Данная форма ключевого слова super применяется в тех случаях, если член подкласса скрывает член суперкласса. Рассмотрим следующий пример несложной иерархии классов:
// Применение ключевого слова super для предотвращения сокрытия имен.
class А {
int i;
}
// создать подкласс, расширяющий класс А.
class В extends А {
int i; // Эта переменная i скрывает переменную i из класса А.
В (int a, int b) {
// Оператор super.i ссылается на переменную i из класса А.
super.i = а; // переменная i из класса А
i = b; // переменная i из класса В
}
void show() {
System, out .println ("i in superclass: 11 + super, i);
System.out.println("i in subclass: " + i);
}
}
class UseSuper {
public static void main(String args[]) {
В subOb = new В (1, 2)*;
subOb.show();
}
}
Результат выполнения данной программы выглядит следующим образом:
i in superclass: 1
i in subclass: 2
Несмотря на то что переменная экземпляра i в классе В скрывает одноименную переменную в классе А, ключевое слово super позволяет обращаться к переменной i из суперкласса. Аналогичным образом ключевое слово super можно использовать для вызова методов суперкласса, скрываемых методами подкласса.
Пример для опробования 7.1.
Расширение класса Vehicle





