Есть package
p1
, в котором расположены 3 файла:
Demo.java
:
package p1;
public class Demo
{
public static void main(String [] args)
{
Protection ob1 = new Protection();
Derived ob2 = new Derived();
}
}
Protection.java
:
package p1;
public class Protection
{
int n = 1;
private int n_pri = 2;
protected int n_pro = 3;
public int n_pub = 4;
public Protection()
{
System.out.println("Konstruktor bazovoo klassa.");
System.out.println("n = " + n);
System.out.println("n_pri = " + n_pri);
System.out.println("n_pro = " + n_pro);
System.out.println("n_pub = " + n_pub);
}
}
Derived.java
:
package p1;
public class Derived extends Protection
{
Derived()
{
System.out.println(12);
}
}
Вывод:
Konstruktor bazovoo klassa.
n = 1
n_pri = 2
n_pro = 3
n_pub = 4
Konstruktor bazovoo klassa.
n = 1
n_pri = 2
n_pro = 3
n_pub = 4
12
Почему срабатывает 2 раза конструктор класса Protection
, если я его не вызывал в классе Derived
, например, Derived() {super()};
?
При срабатывании конструктора потомка всегда вызывается конструктор предка, даже если вы не вызываете его явно. Компилятор сам дописывает вот такую строчку за вас:
Derived()
{
super(); // autogenerated
System.out.println(12);
}
Причем вызов коструктора супер класса всегда идет первым ! (таковы правила). Если вы попробуете изменить порядок, то компилятор сообщит вам об ошибке.
Потому что он вызывается неявно
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
После скачивания и подключения библиотек Apache POI из сайта poiapache
Есть VideoView, в нем по методу setVideoView(Uriparse("somePathUrlVideo")) загружается видео через интернет, проблема в том, что загрузка очень долгая, несколько секунд,...
Реализация игры 2048 на javaЕсть 5 классов: Main - служит для запуска приложения
День добрыйПри запуске карты мое приложение открывает карту мира