Здравствуйте, 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-конструктор"
}
}
как повторить?