Показать сообщение отдельно
Старый 16.05.2012, 02:29
Партизан вне форума Посмотреть профиль Отправить личное сообщение для Партизан Найти все сообщения от Партизан
  № 6  
Ответить с цитированием
Партизан
 
Аватар для Партизан

блогер
Регистрация: Nov 2007
Адрес: Almaty, Moscow
Сообщений: 396
Записей в блоге: 5
Отправить сообщение для Партизан с помощью Skype™
Думаю, при инициализации переменных берется только класс переменной из родительского. Для Boolean значение по умолчанию 'false'. После вызова родительского конструктора, переменной задается значение, если значение задано до вызова super(), то значение родительского класса игнорируется(что логично в общем-то). Если super() не вызывается в конструкторе, компилятор добавляет его в первую инструкцию конструктора наследника.

Код AS3:
public class A 
	{
		protected var a:String = 'from A';
		trace('init A');
 
		public function A() 
		{
			trace('cnt A');
			a = 'from cnt A';
 
		}
 
	}
 
public class B extends A
	{
		trace('init B')
		public function B() 
		{
			trace('cnt B, set a, a=', a);
			a = 'cnt B'
			trace('a from B cnt, a=', a);
			super();			
		}
 
	}
 
var b:B = new B();
trace('')
var c:B = new B();
 
/*
init A
init B
cnt B, set a, a= null
a from B cnt, a= cnt B
cnt A
 
cnt B, set a, a= null
a from B cnt, a= cnt B
cnt A
*/