• Java 7 动手动脑


     Java 课后作业

    .运行 TestInherits.java 示例,观察输出,注意总结父类与子类之间构造方法的调用关系修改Parent构造方法的代码,显式调用GrandParent的另一个构造函数,注意这句调用代码是否是第一句,影响重大!

     1.源代码:

    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 static void main(String args[]) {

            Child c = new Child();

        }

    }

      

     2.实验结果:

     

     3.结论:通过 super 调用基类构造方法,必须是子类构造方法中的第一个语句。

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

    原因:构造函数用来在创建对象时初始化对象,与new运算符一起使用在创建对象的语句时。子类拥有父类的成员变量和成员方法,如果不调用,则从父类继承而来的成员变量和成员方法得不到正确的初始化。不可以反过来调用,父类不知道子类有什么变量,导致子类得不到正确的初始化,程序出错。

    .无任何成员变量的空类

    参看 ExplorationJDKSource.java 示例,此示例中定义了一个类A,它没有任何成员: class A { }

    1.源代码:

    public class ExplorationJDKSource {

    public static void main(String[] args) {

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

    }

    }

    class A{}

    2.结果截图:

     

    3.结果分析:

    前面示例中,main方法实际上调用的是: public void println(Object x),这一方法内部调用了String类的valueOf方法。 valueOf方法内部又调用Object.toString方法: public String toString()

    { return getClass().getName() +"@" + Integer.toHexString(hashCode()); }

    hashCode方法是本地方法,由JVM设计者实现: public native int hashCode();

  • 相关阅读:
    WDF驱动中KMDF与UMDF区别
    GTD190018:【翻译】The Case Against Civilization
    GTD190017:【翻译】Transformer: A Novel Neural Network Architecture for Language Understanding
    GTD180016:【翻译】Software Engineering ≠ Computer Science
    GTD180015:【学习】一文看尽深度学习RNN:为啥就它适合语音识别、NLP与机器翻译?
    GTD180014:【翻译】Combinatory_logic
    GTD180013:【翻译】Improving the Realism of Synthetic Images
    GTD180012:【翻译】Visualizing Algorithms
    GTD180011:【翻译】The future of deep learning
    GitHub180001:【翻译】Using 3D Convolutional Neural Networks for Speaker Verification
  • 原文地址:https://www.cnblogs.com/gong123/p/6055838.html
Copyright © 2020-2023  润新知