接口与继承课后作业

完成课件中的动手动脑的或需要验证的相关内容:

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 Test{

 

    public static void main(String args[]) {

        Child c = new Child();

    }

}

运行结果截图:

 

思考:

为什么子类的构造方法在运行之前,必须调用父类的构造方法?能不能反过来?为什么不能反过来?

构造一个对象,先调用其构造方法,来初始化其成员函数和成员变量。子类拥有父的成员变量和成员方法,如果不调用,则从父类继承而来的成员变量和成员方法得不到正确的初始化。

不能反过来。

 

2

源程序代码:

public class Test {

 

/**

 * @param args

 */

public static void main(String[] args) {

System.out.println(new A());

}

 

}

 

class A{}

运行结果截图:

 

 

源程序代码:

public class Fruit

{

 

public String toString()

{

return "Fruit toString.";

}

 

public static void main(String args[])

{

Fruit f=new Fruit();

System.out.println("f="+f);

// System.out.println("f="+f.toString());

}

}

运行结果截图:

 

posted @ 2015-11-06 11:44  sunmei  阅读(120)  评论(0编辑  收藏  举报