Java руководство для начинающих - Шилдт Герберт (2012)
-
Год:2012
-
Название:Java руководство для начинающих
-
Автор:
-
Жанр:
-
Оригинал:Английский
-
Язык:Русский
-
Издательство:Вильямс
-
Страниц:316
-
ISBN:978-5-8459-1770-6
-
Рейтинг:
-
Ваша оценка:
Java руководство для начинающих - Шилдт Герберт читать онлайн бесплатно полную версию книги
Если конструктор определен только в подклассе, то все происходит очень просто: конструируется объект подкласса, а родительская часть объекта автоматически конструируется конструктором суперкласса, используемым по умолчанию. В качестве примера ниже приведен переработанный вариант класса Triangle, в котором определяется конструктор, а член style этого класса делается закрытым, так как теперь он устанавливается конструктором.
// Добавление конструктора в класс Triangle.
// Класс, описывающий двумерные объекты,
class TwoDShape {
private double width; // Теперь эти переменные
private double height; // объявлены как закрытые.
// Методы доступа к переменным экземпляра width и height.
double getWidth() { return width; }
double getHeight() { return height; }
void setWidth(double w) { width = w; }
void setHeight(double h) { height = h; }
void showDim() {
System.out.println("Width and height are " +
width + " and " + height);
}
}
// Подкласс, производный от класса TwoDShape,
// для представления треугольников,
class Triangle extends TwoDShape {
private String style;
// Конструктор.
Triangle(String s, double w, double h) {
// Инициализация родительской части объекта,
// соответствующей классу TwoDShape.
setWidth(w);
setHeight(h);
style = s;
}
double area() {
return getWidth() * getHeightO / 2;
}
void showStyle() {
System.out.println("Triangle is " + style);
}
}
class Shapes3 {
public static void main(String args[]) {
Triangle tl = new Triangle("isosceles", 4.0, 4.0);
Triangle t2 = new Triangle("right", 8.0, 12.0);
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());
}
}
Здесь конструктор класса Triangle, помимо поля style, инициализирует также унаследованные члены класса TwoDClass.
Если конструкторы объявлены как в подклассе, так и в суперклассе, то дело несколько усложнятся, поскольку должны быть выполнены оба конструктора. В таком случае на помощь приходит ключевое слово super, доступное в двух общих формах. С помощью первой формы вызывается конструктор суперкласса. А вторая форма служит для доступа к членам суперкласса, скрываемым членами подкласса. Рассмотрим первое применение ключевого слова super.
Применение ключевого слова super для вызова конструктора суперкласса
Для вызова конструктора суперкласса служит следующая общая форма ключевого слова super:
super (список_параметров);
где список_параметров обозначает параметры, необходимые для нормальной работы конструктора суперкласса. Вызов конструктора super () должен быть первым оператором в теле конструктора подкласса. Для того чтобы лучше понять особенности вызова super (), рассмотрим вариант класса TwoDShape из следующего примера программы, где определен конструктор, инициализирующий переменные экземпляра width и height:
// Добавление конструкторов в класс TwoDShape.
class TwoDShape {
private double width;
private double height;
// Параметризированный конструктор объектов класса TwoDShape.
TwoDShape(double w, double h) {
width = w;
height = h;
}
// Методы доступа к переменным экземпляра width и height.
double getWidth() { return width; }
double getHeight() { return height; }
void setWidth(double w) { width = w; }
void setHeight(double h) { height = h; }
void showDim() {