Студопедия
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Использование ключевого слова super

Читайте также:
  1. At the Supermarket
  2. Dangerous, Heal the World Foundation, and Super Bowl XXVII
  3. Distribution Supervisor
  4. ENABLING U.S. GLOBAL INFORMATION SUPERIORITY, DURING PEACE AND THROUGH WAR. 1 страница
  5. ENABLING U.S. GLOBAL INFORMATION SUPERIORITY, DURING PEACE AND THROUGH WAR. 2 страница
  6. ENABLING U.S. GLOBAL INFORMATION SUPERIORITY, DURING PEACE AND THROUGH WAR. 3 страница
  7. ENABLING U.S. GLOBAL INFORMATION SUPERIORITY, DURING PEACE AND THROUGH WAR. 4 страница
  8. ENABLING U.S. GLOBAL INFORMATION SUPERIORITY, DURING PEACE AND THROUGH WAR. 5 страница
  9. ENABLING U.S. GLOBAL INFORMATION SUPERIORITY, DURING PEACE AND THROUGH WAR. 6 страница
  10. ENABLING U.S. GLOBAL INFORMATION SUPERIORITY, DURING PEACE AND THROUGH WAR. 7 страница

В предыдущем примере показано как можно просто наследовать подкласс от суперкласса. Однако в подклассе достаточно неэффективно реализован конструктор с параметрами. В нем выполняется: во-первых, дублирование действий конструктора суперкласса, во-вторых, отсутствует возможность инициализации переменной b суперкласса при создании объекта подкласса. Решить данные проблемы можно, если использовать ключевое слово super.

Ключевое слово super имеет две формы. Первая служит для вызова конструктора суперкласса, вторая для доступа к компонентам суперкласса скрытым компонентом подкласса.

 

Использование super для вызова конструктора суперкласса

Из конструктора подкласса можно осуществить вызов конструктора суперкласса используя ключевое слово super в следующей форме.

super(список параметров);

где список параметров – список передаваемых переменных конструктору суперкласса. Эта инструкция должна быть всегда первой в конструкторуе подкласса. Как и обычный конструктор (точнее в соответствии с ним) super может быть перегружен.

class A // суперкласс А

{ int a; // (public) доступен в подклассе

private int b; // не доступен в подклассе

protected int c; // доступен в подклассе

A(){} // конструктор без параметров

A(int aa, int bb) // конструктор c 2 параметрами

{ a = aa; // создание нового объекта

b = bb;

c = a+b;

}

A(int aa, int bb, int cc) // конструктор c 3 параметрами

{ a = aa; // создание нового объекта

b = bb;

c = cc;

}

A(A ob) // конструктор параметром объект

{ a = ob.a; // построение клона объекта

b = ob.b;

c = ob.c;

}

void fun_A()

{ System.out.println("supperclass (a,b,c) "+a+' '+ b+' '+c);

}

 

}

class B extends A // подкласс В

{ int d;

B() { } // конструктор без параметров

B(int aa, int bb, int dd) // конструктор c 3 параметрами

{ super(aa,bb);

d = dd;

}

B(int aa, int bb, int cc, int dd) // конструктор c 4 параметрами

{ super(aa,bb,cc);

d = dd;

}

B(B ob) // конструктор параметром объект

{ super(ob);

d = ob.d; // построение клона объекта

}

void fun_B()

{ System.out.println("subclass (a,c,d) "+a+' '+c+' '+d);

}

}

class start

{ public static void main(String[] args)

{ A ob1=new A(1,2);

ob1.fun_A();

A ob2=new A(3,4,5);

ob2.fun_A();

B ob3 = new B(6,7,8,9);

ob3.fun_A();

ob3.fun_B();

B ob4 = new B(10,11,12);

ob4.fun_A();

ob4.fun_B();

}

}

Несколько слов о конструкторе:

B(B ob) // конструктор параметром объект

{ super(ob);

d = ob.d; // построение клона объекта

}

В нем super(ob), вызывается для объекта типа класс B. Эта инструкция активизирует конструктор своего непосредственного суперкласса А:

A(A ob),

где ob уже переменная типа суперкласса А. Как отмечалось выше, переменная суперкласса может быть использована для ссылки на любой объект производного класса.

 




Дата добавления: 2015-09-11; просмотров: 78 | Поможем написать вашу работу | Нарушение авторских прав

Язык JAVA | Виртуальная Java-машина. | Типы данных | Одномерные массивы | Многомерные массивы | Вызов конструктора из конструктора | Ключевое слово static | Использование final с наследованием | Оператор import | Оператор implements |


lektsii.net - Лекции.Нет - 2014-2025 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав