Constructor Chaining Constructing an instance of a class invokes all the superclasses constructors( along the inheritance chain This is called constructor chaining public class Faculty extends Employee public static void main(string[] args)t new Faculty oi public Faculty System. out. println("Faculty ' s no-arg cons tructor is invoked") class Employee extends Person t public Employee)( this("Invoke Employee's overloaded constructor") System. out. println("Employee's no-arg constructor is invoked") public Employee(string s)t System. out. println(s)i class Person public Person()i System. out. println("Person's no-arg constructor is invoked")
Liang,Introduction to Java Programming,revised by Dai-kaiyu 16 Constructor Chaining public class Faculty extends Employee { public static void main(String[] args) { new Faculty(); } public Faculty() { System.out.println("Faculty's no-arg constructor is invoked"); } } class Employee extends Person { public Employee() { this("Invoke Employee’s overloaded constructor"); System.out.println("Employee's no-arg constructor is invoked"); } public Employee(String s) { System.out.println(s); } } class Person { public Person() { System.out.println("Person's no-arg constructor is invoked"); } } Constructing an instance of a class invokes all the superclasses’ constructors along the inheritance chain. This is called constructor chaining
onstructor Chaining Constructing an instance of a class invokes all the superclasses constructors( long the inheritance chain. This is called constructor chaining public class Faculty extends Employee i public static void main(string[] args) t new Faculty public Faculty t System. out. println("(4)Faculty's no-arg constructor is invoked) class Employee extends Person public Employee)t this((2) Invoke Employee's overloaded constructor") System. out. println("(3) Employee's no-arg constructor is invoked")i public Employee (string s)t System. out. println(s)i class person public Person()t System. out. println("(1)Person's no-arg constructor is invoked")i
Liang,Introduction to Java Programming,revised by Dai-kaiyu 17 Constructor Chaining public class Faculty extends Employee { public static void main(String[] args) { new Faculty(); } public Faculty() { System.out.println("(4) Faculty's no-arg constructor is invoked"); } } class Employee extends Person { public Employee() { this("(2) Invoke Employee’s overloaded constructor"); System.out.println("(3) Employee's no-arg constructor is invoked"); } public Employee(String s) { System.out.println(s); } } class Person { public Person() { System.out.println("(1) Person's no-arg constructor is invoked"); } } Constructing an instance of a class invokes all the superclasses’ constructors along the inheritance chain. This is called constructor chaining
Trace Execution public class Faculty extends Employee public static void main(String[] args new Faculty oi 1. Start from the main method public Faculty I System. out. println ("(4) Faculty 's no-arg constructor is invoked") class Emp loyee extends Person t public Employee() t this("(2) Invoke Employee's overloaded constructor System. out. println("(3) Employee 's no-arg constructor is invoked") public Employee(string s) t System. out. println (s) class Person t public Person()i System. out. println ((1) Person's no-arg constructor is invo ked")i Liang, Introduction to Java Programming, revised by Dai-kaiyu
Liang,Introduction to Java Programming,revised by Dai-kaiyu 18 Trace Execution public class Faculty extends Employee { public static void main(String[] args) { new Faculty(); } public Faculty() { System.out.println("(4) Faculty's no-arg constructor is invoked"); } } class Employee extends Person { public Employee() { this("(2) Invoke Employee’s overloaded constructor"); System.out.println("(3) Employee's no-arg constructor is invoked"); } public Employee(String s) { System.out.println(s); } } class Person { public Person() { System.out.println("(1) Person's no-arg constructor is invoked"); } } 1. Start from the main method
Trace Execution public class Faculty extends Employee t public static void main(string[] args) new Faculty o)i 2. Invoke Faculty constructor bublic Faculty( System. out. println("(4) Facultys no-arg constructor is invoked) class Emp loyee extends Person t public Employee() t this("(2) Invoke Employee's overloaded constructor System. out. println("(3) Employee 's no-arg constructor is invoked") public Employee(string s) t System. out. println (s) class Person t public Person()i System. out. println ((1) Person's no-arg constructor is invo ked")i Liang, Introduction to Java Programming, revised by Dai-kaiyu
Liang,Introduction to Java Programming,revised by Dai-kaiyu 19 Trace Execution public class Faculty extends Employee { public static void main(String[] args) { new Faculty(); } public Faculty() { System.out.println("(4) Faculty's no-arg constructor is invoked"); } } class Employee extends Person { public Employee() { this("(2) Invoke Employee’s overloaded constructor"); System.out.println("(3) Employee's no-arg constructor is invoked"); } public Employee(String s) { System.out.println(s); } } class Person { public Person() { System.out.println("(1) Person's no-arg constructor is invoked"); } } 2. Invoke Faculty constructor
Trace Execution public class Faculty extends Employee t public static void main(string[] args) new Faculty o)i System. out. println("(4) Faculty 's no-arg constructor is invoked") 3. Invoke Employees nc class emp loyee extends Person arg constructor public Employee()( this("(2)工 erloaded constructor) System. out. println("(3) Employee 's no-arg constructor is invoked") public Employee(string s) t System. out. println (s) class Person t public Person()i System. out. println ((1) Person's no-arg constructor is invo ked")i Liang, Introduction to Java Programming, revised by Dai-kaiyu
Liang,Introduction to Java Programming,revised by Dai-kaiyu 20 Trace Execution public class Faculty extends Employee { public static void main(String[] args) { new Faculty(); } public Faculty() { System.out.println("(4) Faculty's no-arg constructor is invoked"); } } class Employee extends Person { public Employee() { this("(2) Invoke Employee’s overloaded constructor"); System.out.println("(3) Employee's no-arg constructor is invoked"); } public Employee(String s) { System.out.println(s); } } class Person { public Person() { System.out.println("(1) Person's no-arg constructor is invoked"); } } 3. Invoke Employee’s noarg constructor