powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Что за конструкция
9 сообщений из 9, страница 1 из 1
Что за конструкция
    #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
Что за конструкция
    #38575116
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анонимный класс. Ну, вы даёте.
Это класс без Java имени , который наследован от Child. При компиляции именуется синтетическим именем Main$1, Main$2 и т.д. Посмотрите результат компиляции.
...
Рейтинг: 0 / 0
Что за конструкция
    #38575119
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторкогда при создании объекта (выделение памяти), его можно как бы инициализировать?
Вот тут у вас серьезные пробел в терминологии. Инициализация - это задание изначального состояния объекта.
Здесь же задаётся "поведение" объекта. С инициализацией ничего общего.
...
Рейтинг: 0 / 0
Что за конструкция
    #38575139
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczавторкогда при создании объекта (выделение памяти), его можно как бы инициализировать?
Вот тут у вас серьезные пробел в терминологии. Инициализация - это задание изначального состояния объекта.
Здесь же задаётся "поведение" объекта. С инициализацией ничего общего.

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

Именно!

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

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

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

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

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


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