Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Что за конструкция / 9 сообщений из 9, страница 1 из 1
28.02.2014, 12:00
    #38575100
NDAleksey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что за конструкция
Доброго всем времени! Я думал, что основные конструкции в Java Core я знаю, но по ходу, я ошибался. Щас в сети наткнулся на на подобный код:
Код: 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.
interface Parent
{
	void showMessage();
}

class Child implements Parent
{
	public int data = 5;

	@Override
	public void showMessage()
	{
		System.out.format( "Child = %d\n", data );
	}
}

public class Main
{
	public static void main( String... args )
	{
		Parent parent = new Child()
		{
			@Override
			public void showMessage()
			{
				System.out.format( "Child form Main = %d\n", this.data );
			}
		};

		parent.showMessage();
	}
}


Что эта за конструкция в Java-е, когда при создании объекта (выделение памяти), его можно как бы инициализировать? Причем есть в Child сделать data private, то this.data я ее не увижу. Это же не глава про внутренние классы?
...
Рейтинг: 0 / 0
28.02.2014, 12:11
    #38575116
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что за конструкция
Анонимный класс. Ну, вы даёте.
Это класс без Java имени , который наследован от Child. При компиляции именуется синтетическим именем Main$1, Main$2 и т.д. Посмотрите результат компиляции.
...
Рейтинг: 0 / 0
28.02.2014, 12:12
    #38575119
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что за конструкция
авторкогда при создании объекта (выделение памяти), его можно как бы инициализировать?
Вот тут у вас серьезные пробел в терминологии. Инициализация - это задание изначального состояния объекта.
Здесь же задаётся "поведение" объекта. С инициализацией ничего общего.
...
Рейтинг: 0 / 0
28.02.2014, 12:26
    #38575139
NDAleksey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что за конструкция
Blazkowiczавторкогда при создании объекта (выделение памяти), его можно как бы инициализировать?
Вот тут у вас серьезные пробел в терминологии. Инициализация - это задание изначального состояния объекта.
Здесь же задаётся "поведение" объекта. С инициализацией ничего общего.

Опять Вы меня на терминологии именно этого слова подловили = ) Т.е. Это анонимный класс унаследованный от Child? Unbelievable!!!
Кстати, там происходит банальное объявление класса, а не его инициализация , ибо априори класс же невозможно инициализировать? Инициализируются объекты - переменные класса. Теперь у меня порядок?)
...
Рейтинг: 0 / 0
28.02.2014, 12:29
    #38575149
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что за конструкция
NDAlekseyКстати, там происходит банальное объявление класса, а не его инициализация

Именно!

NDAleksey, ибо априори класс же невозможно инициализировать? Инициализируются объекты - переменные класса. Теперь у меня порядок?)
Не совсем верно. У классов тоже есть понятие инициализации. С точки зрения JVM
http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-5.html
С точки зрения языка, это запуск блоков статической инициализации. И инициализация статических полей.
...
Рейтинг: 0 / 0
28.02.2014, 12:48
    #38575170
NDAleksey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что за конструкция
BlazkowiczС точки зрения языка, это запуск блоков статической инициализации. И инициализация статических полей.

А если идет инициализация нестатических полей или final-полей?

После прочтения первого параграфа данной Вами статьи, я понял, что глубоко заблуждаюсь в своих познаниях Java. Я так понимаю, что уважающий себя Java-программист должен знать принципы и этапа работы JVM?
...
Рейтинг: 0 / 0
28.02.2014, 13:05
    #38575205
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что за конструкция
NDAlekseyА если идет инициализация нестатических полей или final-полей?

final тут не при чем.
Не статические поля инициализируются на этапе выполнения конструктора.
К инициализации класса выполнения конструктора отношения не имеет.

NDAlekseyПосле прочтения первого параграфа данной Вами статьи, я понял, что глубоко заблуждаюсь в своих познаниях Java. Я так понимаю, что уважающий себя Java-программист должен знать принципы и этапа работы JVM?
Субъеквтиный вопрос. Я для себя пытаюсь узнать о программировании вообще всё до чего есть время дотянуться. Что вам делать, вам же и решать.
...
Рейтинг: 0 / 0
28.02.2014, 13:11
    #38575209
NDAleksey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что за конструкция
Blazkowicz, спасибо большое. Мысль ясна)
...
Рейтинг: 0 / 0
01.03.2014, 20:47
    #38576150
avp.mk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что за конструкция
BlazkowiczНе статические поля инициализируются на этапе выполнения конструктора.
До выполнения конструктора.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Что за конструкция / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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