powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопросы новичка.
25 сообщений из 83, страница 1 из 4
Вопросы новичка.
    #38684956
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день всем! Начинаю осваивать Java, и на первых парах возникает много вопросов. Буду рад если поможете разобраться. Периодически буду выкладывать сюда вопросы.

Вопрос №1: Можно ли создать экземпляр вложенного статического класса вне пределов класса, в который он вложен ?
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38684959
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustgreenВопрос №1: Можно ли создать экземпляр вложенного статического класса вне пределов класса, в который он вложен ?
Можно. Следующий!
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38684973
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz, а вдруг ТС на экзамене или тесте? :)
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38684980
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanBlazkowicz, а вдруг ТС на экзамене или тесте? :)
Удачи ему. :)
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38684991
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Напоминает армии - старшие издеваются над младшими =)). А человек реально хочет разобраться. Переформулирую вопрос:
Есть класс:
Код: 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.
34.
package vnutrennie_classi.vlogenii_static;

public class Vlogenii_static {
	static private final int CONSTANT1 = 10;
	final int CONSTANT3 = 33;
	void foo(){
		Inner a = new Inner();
		a.metod2();
		// окружающий класс имеет доступ ко всем статическим членам вложенного статичекого класса(даже приватным). 
		System.out.println(Inner.CONSTANT2*3);
	}
	
	public static class Inner{
		static private final int CONSTANT2 = 10;
		int c=10;
		void metod2(){
			System.out.println(CONSTANT1*CONSTANT2);
		}
	} 
	
	public static void main(String[] args) {
		// Вложенный статический класс имеет доступ о всем статическим членам окружающего класса.
		System.out.println(CONSTANT1*Inner.CONSTANT2);
		// Нельзя напрямую обратиться к нестатическим членам окружающего класса.
		// но можно создать его екземпляр и от него получить их.
		//System.out.println(CONSTANT3); - Ошибка!!!
		Vlogenii_static class1 = new Vlogenii_static();
		class1.foo();
		System.out.println(class1.CONSTANT3);
		
		Inner b = new Inner();
		System.out.println(b.c);
	}
}



В этом же пакете создал другой класс, в котором хотел узнать смогу ли я там как-нибудь создать класс Inner и посмотреть что от туда (внешнего класса мне будет доступно).
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38684993
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как создать класс Inner во внешнем классе ?
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38684997
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustgreenКак создать класс Inner во внешнем классе ?
Вот опять. Проблема одна. А вопрос другой. У вас же вопрос о том как ссылаться на внутрений класс.
Вопрос ведь не в том как создать класс или его экземпляр.

Код: java
1.
2.
vnutrennie_classi.vlogenii_static.Vlogenii_static.Inner inn;
inn = new vnutrennie_classi.vlogenii_static.Vlogenii_static.Inner();
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38685002
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вариант создать экземпляр класса в котором размещен статический вложенный класс
Код: java
1.
Vlogenii_static a = new Vlogenii_static()

и от него создать нужный
Код: java
1.
a.new Inner();

не работает.
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38685006
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все работает, спасибо, буду дальше разбираться.
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38685011
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ужасная привычка разбирать неправильные use-cases перешла от С++ к Java.

Нет это прям болезнь какая-то....
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38685014
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustgreenВариант создать экземпляр класса в котором размещен статический вложенный класс
Код: java
1.
Vlogenii_static a = new Vlogenii_static()

и от него создать нужный
Код: java
1.
a.new Inner();

не работает.
Это синтаксис для не-статических вложеных классов.
Настоятельно рекомендую читать официальные Java туториалы. Они очень простые и легко читаются даже с базовым английским.
http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38689635
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос №2: Правильно ли я понимаю следующее?

Код:
Код: 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.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
package nasledovanie;

public class PrisvaevaniePeremennoiTipaAObiektaPodklassaTipaB {
	class A{
		// Свойства класса А.
		int a;
		boolean b;
		String c;
		
		// Конструктор класса А по умолчанию.
		A(){
			a = -1;
			b = false;
			c = "Empty";
		}
		
		// Конструктор с 3 параметрами.
		A(int a, boolean b, String c){
			this.a = a;
			this.b = b;
			this.c = c;
		}
		
		// Метод класса А.
				void methodA(){
					System.out.println("Метод класса А.");
				}
	}
	
	class B extends A{
		// "Личные свойства класса B"
		double d;
		
		// Конструктор по умолчанию класса B.
		B(){
			super();
			d = -1; 
		}
		
		// Конструктор с 4 параметрами для класса B.
		B(int a, boolean b, String c, double d){
			super(a, b, c); // Если опустить эту конструкцию, то будет вызван конструктор по умолчанию суперкласса
			this.d = d;
		}
		
		// Переопределенный метод класса А.
		void methodA(){
			System.out.println("Переопределенный метод класса А. d = "+d);
		}
		
		// Метод класса B;
		void metodB(){
			System.out.println("Метод класса B.");
		}
	}
	
	public static void main(String[] args){
		PrisvaevaniePeremennoiTipaAObiektaPodklassaTipaB classMain = new PrisvaevaniePeremennoiTipaAObiektaPodklassaTipaB();
		A a3 = classMain.new A(2, true, "Hello!");
		B b4 = classMain.new B(2, true, "Hello!", 56.9);
		B bx;
		// Переменной типа А присваиваем значение ссылки на переменнную типа B.
		a3 = b4;
		
		// Ошибка !!!
		//a3.d; Переменная a3 может знать только о тех членах класса, которые в ней описанны.
		// Ошибка !!! Тоже и с методами.
		// a3.methodB();
		a3.methodA(); // Однако, если класс B имеет переопределенный метод, то вызываться будет именно он.
		
		bx = (B)a3;
		System.out.println(bx.d); // Значение переменной d не было утеряно.
		
	}
}



а). При присвоении переменной суперкласса значения переменной подкласса, сам подкласс полностью сохраняет свое состояние, а при работе с ним как объектом суперкласса на него как бы налаживаеться фильтр этого класса ? Из примера получается так, так как мы не потерялди значение переменной "d"?

б). Суперкласс получивший ссылку на подкласс не может ссылаться на переменные и методы принадлежащие только подклассу, кроме переопределенных методов, даже если в них используются выражения с переменными принадлежащими только подклассу?
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38689644
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с). При приведении типа суперкласса к типу подкласса все поля суперкласса присваиваются полям подкласса, а "личные" поля подкласса сохраняют свои значения которые были до этого ?
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38689647
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блджад. Убил-бы тех кто на собеседовании задаёт "вопросы вселенского" масштаба.
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38689653
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я просто стараюсь изучать джаву по принципу - "Понимание лучше запоминания". Когда понимаешь что и как, сам можешь делать выводы в непонятных ситуациях. А если просто зубрить, то часто неиспользуемое забывается.
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38689662
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustgreen, вопрос в том что кроется за этими странными синтетическими примерами.
Вот тут в смежной ветке по сям один чел парился разбором С++ исходника. Причем
такого исходника которого в природе не бывает. Ну вот такие вот у него сублимации.
Нету ориентира. Вот и парится. Уже вес терять начал.

И тебе совет дам.

Учи работу с коллекциями и мультипоточность. Когда сможешь решить любую задачу - на
Collections и Multithreading - будешь сеньор-джава-помидор и тебе будет абсолютно пофиг какие классы запилены.
Вложеные или внешние статические там или еще бохзнает какие абстрактные.

А этот пример выкинь в топку. Он бесполезен для бизнес логики. В нём нет сакрального
смысла и он не отвечает на вопросы философских камней и богов.
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38689767
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustgreenВопрос №2: Правильно ли я понимаю следующее?
Очень плохо с терминологией.
1) Поля это не свойства. Свойства в Java это get/set методы. Свойства как и обычные методы могут быть виртуальными. Поля не могут.
2) У переопределенных методов нужно ставить аннотацию @Override. Помогает чтению кода без IDE и контролирует изменения в родительском классе.
3) Есть класс-предок (родитель) и класс-наследник. Термины "подкласс" и "супер-класс" используются редко. Особенно "подкласс", так как не всегда очевидно речь о наследнике или вложенном классе.
4) Нужно четко разделять - объект (экземпляр класса) и класс. "сам подкласс полностью сохраняет свое состояние" это в данном случае бред.

Создаётся объект типа B. Ссылка типа A (переменная) может указывать на объект типа B, потому что B это A. Но ссылка она лишь всего "указывает" на объект. Сам объект от этого никак не меняется. "Состояние" это свойства объекта. Хотя у класса тоже может быть "состояние". Но это совсем другая тема.
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38695446
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос №3.
Интерфейс может иметь модификатор abstract как для самого себя так и для объявлений методов. Зачем ? Там же все и так вроде бы как неявно описывается им, или все таки есть ситуации где это не так ?
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38695479
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
interface I {
  void C();
  abstract void A1();
  abstract void A2();
}

abstract class C implements I {
  public void C() {}
  public void A1() {}
  abstract void A2();
}

?
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38695480
korshun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustgreen, http://docs.oracle.com/javase/specs/jls/se7/html/jls-9.html#jls-9.1.1.1

9.1.1.1. abstract Interfaces

Every interface is implicitly abstract.

This modifier is obsolete and should not be used in new programs.
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38707313
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос №4.
Код: 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.
package exeptions;

import java.util.Random;

public class MyExeption {
	public static void main(String[] args) throws MyNewExeption {
		Random rnd = new Random();
		int a = rnd.nextInt(20);
		System.out.println(a);
		
		try{
		if(a>10)
			throw new MyNewExeption(a);
		}catch(MyNewExeption e){
			System.out.println(e);
			e.printStackTrace();
		}
	}
}

class MyNewExeption extends Exception{
	
	int detail;
	
	public MyNewExeption(int a) {
		detail = a;
	}
	public String toString(){
		return "Ошибка, a>10";
	}
}



При многоразовом запуске программы, получаются разные результаты:
иногда :
Код: java
1.
2.
3.
4.
Ошибка, a>10
	at exeptions.MyExeption.main(MyExeption.java:13)
14
Ошибка, a>10

, иногда наоборот:
Код: java
1.
2.
3.
4.
17
Ошибка, a>10
Ошибка, a>10
	at exeptions.MyExeption.main(MyExeption.java:13)


+ вариант где исключение не создается и просто выводится число до 10.
Почему так происходит ?
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38707315
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustgreenRandom rnd = new Random();
При многоразовом запуске программы, получаются разные результаты:

Программа использует Random, но результат ожидается одинаковый? Или что?
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38707317
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл убрать throws в описание метода main, но это на результат не влияет.Интересно, почему в некоторых случаях обработчик исключения срабатывает даже раньше, чем вывод переменной до блока try-catch?
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38707319
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В одном случае сначала выводится результат
Код: java
1.
System.out.println(a);

потом
Код: java
1.
System.out.println(e);

потом
Код: java
1.
e.printStackTrace();

.
В другом случае, сначала
Код: java
1.
e.printStackTrace();

потом
Код: java
1.
System.out.println(a);

потом
Код: java
1.
System.out.println(e);
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38707321
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustgreen,

System.out и System.err это два разных потока вывода. В некоторых случаях порядок вывода err и out в реальную консоль может различаться. Если я правильно понял ваш вопрос. А то какие "обработчики" мутные. У вас в коде нет "обработчиков".
...
Рейтинг: 0 / 0
25 сообщений из 83, страница 1 из 4
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопросы новичка.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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