課后作業1
運行 TestInherits.java ,觀察輸出,總結父類與子類之間構造方法的調用關系修改Parent構造方法的代碼,調用GrandParent的另一個構造函數。
?
class Grandparent {
?
????public Grandparent() {
????????System.out.println("GrandParent Created.");
????}
?
????public Grandparent(String string) {
????????System.out.println("GrandParent Created.String:" + string);
????}
}
?
class Parent extends Grandparent {
?
????public Parent() {
????????//super("Hello.Grandparent.");
????????System.out.println("Parent Created");
???????// super("Hello.Grandparent.");
????}
}
?
class Child extends Parent {
?
????public Child() {
????????System.out.println("Child Created");
????}
}
?
public class TestInherits {
?
????public statclass Grandparent {
?
????public Grandparent() {
????????System.out.println("GrandParent Created.");
????}
?
????public Grandparent(String string) {
????????System.out.println("GrandParent Created.String:" + string);
????}
}
?
class Parent extends Grandparent {
?
????public Parent() {
????????//super("Hello.Grandparent.");
????????System.out.println("Parent Created");
???????// super("Hello.Grandparent.");
????}
}
?
class Child extends Parent {
?
????public Child() {
????????System.out.println("Child Created");
????}
}
?
public class TestInherits {
?
????public static void main(String args[]) {
????????Child c = new Child();
????}
}
?
ic void main(String args[]) {
????????Child c = new Child();
????}
}
結論:
????通過 super 調用基類構造方法,必須是子類構造方法中的第一個語句。子類中,調用父類中被覆蓋的方法,可以使用super語句。
課后作業2
代碼:
????????class?Parent{
?
????public?Parent() {
???????
????????System.out.println("Parent Created");
?
????}
????public?void?show(){
???? ?System.out.println("hello java !");
????}
}
?
class?Child extends?Parent {
?
????public?Child(){
????????System.out.println("Child Created");
}
????public?void?show(){
??? ??? super.show();
???? System.out.println("say hello! child!!!");
??? ?
???}
}
?
public?class?Test6 {
?
????public?static?void?main(String args[]) {
????????Child c = new?Child();
????????c.show();
????}
}