powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос по наследованию
14 сообщений из 14, страница 1 из 1
Вопрос по наследованию
    #39900507
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При наследовании в java создаются все классы в цепочке или только один?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
public class Test_0003 {
	public static void main(String[] args) {
		@SuppressWarnings("unused")
		Third c = new Third();
	}
}

class First {
	int i = 1;
	public First() {
		System.out.println("Constructor A");
		System.out.println(this);
		System.out.println(this.i);
	}
}

class Second extends First {
	int i = 2;
	public Second() {
		System.out.println("Constructor B");
		System.out.println(this);
		System.out.println(this.i);
	}
}

class Third extends Second {
	int i = 3;
	public Third() {
		System.out.println("Constructor C");
		System.out.println(this);
		System.out.println(this.i);
	}
}



Вывод:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
Constructor A
by.pva.test.Third@15db9742
1
Constructor B
by.pva.test.Third@15db9742
2
Constructor C
by.pva.test.Third@15db9742
3
...
Рейтинг: 0 / 0
Вопрос по наследованию
    #39900510
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще, я могу написать
Код: java
1.
2.
3.
4.
5.
6.
7.
class Third extends Second {
	int i = 3;
	public Third() {
		System.out.println("Constructor C");
		System.out.println(super.i);
	}
}


но не могу
Код: java
1.
2.
3.
4.
5.
6.
7.
class Third extends Second {
	int i = 3;
	public Third() {
		System.out.println("Constructor C");
		System.out.println(super);
	}
}
...
Рейтинг: 0 / 0
Вопрос по наследованию
    #39900513
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос то в чем?
...
Рейтинг: 0 / 0
Вопрос по наследованию
    #39900514
apb12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustgreen,

проверь дебагером ,положи в их конструкторы переменную и все сам увидишь
...
Рейтинг: 0 / 0
Вопрос по наследованию
    #39900520
apb12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustgreen
При наследовании в java создаются все классы в цепочке или только один?


и для начала ты должен уяснить что в java классы не создаются а загружаются класслоадером
а создаются объекты определленого класса через ключевое слово new
...
Рейтинг: 0 / 0
Вопрос по наследованию
    #39900521
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustgreen
При наследовании в java создаются все классы в цепочке или только один?

вопрос не корректен

Т.к. классы создают на этапе компиляции и, разумеется, при компиляции Вашей программе будет создано минимум 4-е класса.

В процессе исполнения, при использовании оператора new, создается и инициализируеться ЭКЗЕМПЛЯР объекта. Разумеется создается один экземпляр, но при наследовании, инициализироваться будут все входящие в него <я даже не знаю как это правильно назвать> части. Т.е. должны быть вызвана (по хорошему) цепочка конструкторов из всех классов.
...
Рейтинг: 0 / 0
Вопрос по наследованию
    #39900528
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,
авторвопрос не корректен

Т.к. классы создают на этапе компиляции и, разумеется, при компиляции Вашей программе будет создано минимум 4-е класса.

В процессе исполнения, при использовании оператора new, создается и инициализируеться ЭКЗЕМПЛЯР объекта. Разумеется создается один экземпляр, но при наследовании, инициализироваться будут все входящие в него <я даже не знаю как это правильно назвать> части. Т.е. должны быть вызвана (по хорошему) цепочка конструкторов из всех классов.

Спасибо, вот это и хотел услышать. Разбираюсь с моделью памяти в java, пока не все понятно, пойду почитаю еще где это все хранится ...
...
Рейтинг: 0 / 0
Вопрос по наследованию
    #39900529
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apb12
faustgreen
При наследовании в java создаются все классы в цепочке или только один?


и для начала ты должен уяснить что в java классы не создаются а загружаются класслоадером
а создаются объекты определленого класса через ключевое слово new


Это я понимаю, просто не ту терминологию использовал.
...
Рейтинг: 0 / 0
Вопрос по наследованию
    #39900530
iOracleDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev
вопрос не корректен

Т.к. классы создают на этапе компиляции и, разумеется, при компиляции Вашей программе будет создано минимум 4-е класса.

В процессе исполнения, при использовании оператора new, создается и инициализируеться ЭКЗЕМПЛЯР объекта. Разумеется создается один экземпляр, но при наследовании, инициализироваться будут все входящие в него <я даже не знаю как это правильно назвать> части. Т.е. должны быть вызвана (по хорошему) цепочка конструкторов из всех классов.

Класс тоже "создается" в процессе исполнения, потому что может иметь статические поля принадлежащие классу вцелом, соответственно память под них должна быть выделена и она не относится ни к какому объекту, объекты могут быть вообще не созданы.
...
Рейтинг: 0 / 0
Вопрос по наследованию
    #39900609
apb12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustgreen
Leonid Kudryavtsev,
авторвопрос не корректен

Т.к. классы создают на этапе компиляции и, разумеется, при компиляции Вашей программе будет создано минимум 4-е класса.

В процессе исполнения, при использовании оператора new, создается и инициализируеться ЭКЗЕМПЛЯР объекта. Разумеется создается один экземпляр, но при наследовании, инициализироваться будут все входящие в него <я даже не знаю как это правильно назвать> части. Т.е. должны быть вызвана (по хорошему) цепочка конструкторов из всех классов.


Спасибо, вот это и хотел услышать. Разбираюсь с моделью памяти в java, пока не все понятно, пойду почитаю еще где это все хранится ...
вся объекты хранятся в куче,локальные переменные ,методы в стаке
куча делится на несколько частей
новая и старая ,если на объект нет ссылки он помечается gc и тут два варианта если в этой куче больше объектов без ссылок он перенесет непомеченые в другую часть,которая называется survior,а эту часть просто очистит,если таких объектов не много,то он их пометит и удалит
объекты пережившие сборку мусора переносятя в старую кучу
есть еще perm generation где хранятся мета данные
...
Рейтинг: 0 / 0
Вопрос по наследованию
    #39900629
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Устройство кучи зависит от сборщика мусора, поэтому не надо погружаться подробности без необходимости.
...
Рейтинг: 0 / 0
Вопрос по наследованию
    #39900643
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,
+1
Наследование это логическая абстракция. Никакого отношения к физике не имеющая.
...
Рейтинг: 0 / 0
Вопрос по наследованию
    #39900689
apb12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
Устройство кучи зависит от сборщика мусора, поэтому не надо погружаться подробности без необходимости.

это излюбленная тема на собеседовании и еще есть такие коллекции ,например некоторый вид мапы,где нужно понимать какие виды ссылок бывают
у меня про устройство памяти спрашивали на всех собеседованиях и причем некоторые моменты такие довольно углубленно
поэтому знать это необходимо
...
Рейтинг: 0 / 0
Вопрос по наследованию
    #39969927
Ankit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
faustgreen,

Please read below points to solve the confusion :-

1. When we create the object of a child class then its parents classes are also initialized. It means the constructor of the parent classes will also be called and it will initialize the instance variables of parent class. All the parent classes in the chain will be initialized. Also the instance variables created of parent class will not be stored in separate object of parent class, but will be stored in child class object only.

2. If we create an object of parent class then the child class will not be initialized.
Multilevel Inheritance example.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос по наследованию
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]