Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / вопрос по наследованию / 4 сообщений из 4, страница 1 из 1
06.08.2013, 16:34:32
    #38356991
NDAleksey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по наследованию
Доброго всем дня! Читаю "Философию Явы", уже дошел до поликонструкторов, но вопрос возник совсем откуда не ждал:
Код: 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.
class Parent
{
	String str = "Parent";
	
	void show()
	{
		System.out.println( str );
	}
}

class Child extends Parent
{
	String str = "Child";
	
	void show()
	{
		System.out.println( str );
	}
}

public class Test2
{
	public static void main( String[] args )
	{
		Parent parent = new Child();
		
		System.out.println( parent.str );
		parent.show();
	}
}



почему в результате:
Parent и Child
, а не
Child и Child ?
...
Рейтинг: 0 / 0
06.08.2013, 17:01:12
    #38357082
ivanra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по наследованию
Потому что полиморфизм относится только к методам объекта. А привязка к полям и к статическим методам происходит на этапе компиляции. Объявили переменную типа Parent - компилятор и видит Parent.str. Это из-за того, что в основе полиморфизма - виртуальная таблица методов, в которую адреса переменных и статических методов не попадают.
Можно получить доступ и к полям наследника, но для этого надо явно кастовать объект.
...
Рейтинг: 0 / 0
06.08.2013, 17:05:56
    #38357094
javapecker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по наследованию
...
Рейтинг: 0 / 0
08.08.2013, 10:20:28
    #38359214
NDAleksey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по наследованию
javapecker, ivanra

спасибо большое! очень помогло!
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / вопрос по наследованию / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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