Re[2]: [Scala]static{...} и конструктор суперкласса
От: Аноним  
Дата: 18.04.07 11:32
Оценка:
Здравствуйте, lomeo.

Я и сам подумал, поискал.

Оказывается если код написать просто в теле класса, то он исполняется при создании объекта.

class MainFrame(s: String, l: Lando) extends JFrame(s){
  val compLando=new CompLando(l);
  val status: JPanel = new JPanel();  
  private val cp=getContentPane().asInstanceOf[JPanel];
  
  cp.add(status, BorderLayout.WEST);
  cp.add(compLando,BorderLayout.CENTER);  
  status.setBackground(Color.GRAY);    

  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    
  pack();
  setResizable(false);
  setVisible(true);
  //далее определения методов и прочее 
}

Здесь же и определяются константы. Только вот приходиться писать private перед вспомогательными переменными.

Если же код написать просто в теле объекта, то он исполняется при первом обращении к объекту.
object Dekoracio{ 
  
  private val m = new scala.collection.mutable.HashMap[String, Array[Array[Tajlo]]]
  private val x = scala.xml.XML.loadFile("data\\dekoracio\\dekoracio.xml");
  for(val dekor <- x\\"dekoracio"){
  // ...    
}


Один конструктор суперкласса можно вызвать написав:
class MainFrame(s: String, l: Lando) extends JFrame(s){

1. А как вызвать другой?
2. Как вызывать определенный конструктор суперкласса в зависимости от конструктора?
3. Как назначать константы в зависимости от от конструктора?

Или проще:
 
class B extends A{

final String TEXT;

B(String s){
  super(s)
  TEXT="Вызвали String-конструктор"
}

B(int i){
  super(i)
  TEXT="Вызвали int-конструктор"
}

}


как повторить?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.