Есть 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);
}
Причем вызов коструктора супер класса всегда идет первым ! (таковы правила). Если вы попробуете изменить порядок, то компилятор сообщит вам об ошибке.
Потому что он вызывается неявно
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
После скачивания и подключения библиотек Apache POI из сайта poiapache
Есть VideoView, в нем по методу setVideoView(Uriparse("somePathUrlVideo")) загружается видео через интернет, проблема в том, что загрузка очень долгая, несколько секунд,...
Реализация игры 2048 на javaЕсть 5 классов: Main - служит для запуска приложения
День добрыйПри запуске карты мое приложение открывает карту мира