/* package whatever; // don't place package name! */
import java.util.* ;
import java.lang.* ;
import java.io.* ;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
new Child( ) ;
}
}
/**
* This example demonstrates the order of class and object initialization.
* Class initialization:
* 1. static fields and class initializers in order of declaration.
* Object initialization:
* 1. parent constructor execution
* 2. object fields and instance initializers in order of declaration
* 3. rest of constructor
*/
class Parent {
Parent( ) {
System .
out .
println ( "I'm parent!" ) ; }
}
class Child extends Parent {
static Field staticField
= new Field ( "I'm static field!" ) ;
{
System .
out .
println ( "I'm instance initializer" ) ; field
= new Field ( "I'm field in instance initializer!" ) ; }
static {
System .
out .
println ( "I'm class initializer" ) ; }
final static Field staticFinalField
= new Field ( "I'm final static field!" ) ;
final Field finalField
= new Field ( "I'm Final field" ) ;
public Child( ) {
System .
out .
println ( "I'm child constructor!" ) ; }
public static void main
( String [ ] args
) { new Child( ) ;
}
}
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCW5ldyBDaGlsZCgpOwoJfQp9CgovKioKICogVGhpcyBleGFtcGxlIGRlbW9uc3RyYXRlcyB0aGUgb3JkZXIgb2YgY2xhc3MgYW5kIG9iamVjdCBpbml0aWFsaXphdGlvbi4KICogQ2xhc3MgaW5pdGlhbGl6YXRpb246CiAqIDEuIHN0YXRpYyBmaWVsZHMgYW5kIGNsYXNzIGluaXRpYWxpemVycyBpbiBvcmRlciBvZiBkZWNsYXJhdGlvbi4KICogT2JqZWN0IGluaXRpYWxpemF0aW9uOgogKiAxLiBwYXJlbnQgY29uc3RydWN0b3IgZXhlY3V0aW9uCiAqIDIuIG9iamVjdCBmaWVsZHMgYW5kIGluc3RhbmNlIGluaXRpYWxpemVycyBpbiBvcmRlciBvZiBkZWNsYXJhdGlvbgogKiAzLiByZXN0IG9mIGNvbnN0cnVjdG9yCiAqLwpjbGFzcyBQYXJlbnQgewogICAgUGFyZW50KCkgewogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSSdtIHBhcmVudCEiKTsKICAgIH0KfQoKY2xhc3MgQ2hpbGQgZXh0ZW5kcyBQYXJlbnQgewogICAgc3RhdGljIEZpZWxkIHN0YXRpY0ZpZWxkID0gbmV3IEZpZWxkKCJJJ20gc3RhdGljIGZpZWxkISIpOwoKICAgIEZpZWxkIGZpZWxkID0gbmV3IEZpZWxkKCJJJ20gZmllbGQhIik7CgogICAgewogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSSdtIGluc3RhbmNlIGluaXRpYWxpemVyIik7CiAgICAgICAgZmllbGQgPSBuZXcgRmllbGQoIkknbSBmaWVsZCBpbiBpbnN0YW5jZSBpbml0aWFsaXplciEiKTsKICAgIH0KCiAgICBzdGF0aWMgewogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSSdtIGNsYXNzIGluaXRpYWxpemVyIik7CiAgICB9CgogICAgZmluYWwgc3RhdGljIEZpZWxkIHN0YXRpY0ZpbmFsRmllbGQgPSBuZXcgRmllbGQoIkknbSBmaW5hbCBzdGF0aWMgZmllbGQhIik7CgogICAgZmluYWwgRmllbGQgZmluYWxGaWVsZCA9IG5ldyBGaWVsZCgiSSdtIEZpbmFsIGZpZWxkIik7CgogICAgcHVibGljIENoaWxkKCl7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJJJ20gY2hpbGQgY29uc3RydWN0b3IhIik7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgICAgIG5ldyBDaGlsZCgpOwogICAgfQp9CgpjbGFzcyBGaWVsZCB7CiAgICBwdWJsaWMgRmllbGQoU3RyaW5nIGFyZ3VtZW50KSB7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGFyZ3VtZW50KTsKICAgIH0KfQ==