zoukankan      html  css  js  c++  java
  • 接口与继承 动手动脑

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

    源代码:

    package demo;
    
    class Grandparent 
    {
        public Grandparent() {
    
            System.out.println("GrandParent Created.");
            
    
    }
          public Grandparent(String string) {
    
                System.out.println("GrandParent Created.String:" + string);
    
            }
    }
    package demo;
    
    class Parent extends Grandparent
    {
        public Parent() {
    
            //super("Hello.Grandparent.");
    
            System.out.println("Parent Created");
    
           // super("Hello.Grandparent.");
    
        }
    }
    package demo;
    
    class Child extends Parent 
    {
        public Child() {
    
            System.out.println("Child Created");
    
        }
    }
    package demo;
    
    public class Class {
    
        public static void main(String[] args) {
            // TODO 自动生成的方法存根
            Child c = new Child();
    
        }
    
    }

    程序运行结果截图:

    结论: 通过 super 调用基类构造方法,必须是子类构造方法中的第一个语句。构造一个对象,先调用其构造方法,来初始化其成员函数和成员变量。子类拥有父的成员变量和成员方法,如果不调用,则从父类继承而来的成员变量和成员方法得不到正确的初始化。子类自动拥有父类声明为public和protected的成员。通过 super 调用基类构造方法,必须是子类构造方法中的第一个语句。子类的构造方法在运行之前,必须调用父类的构造方法.以final声明的方法不允许覆盖,以final声明的变量不允许更改,利用final,我们可以设计出一种特殊的“只读” 的“不可变类”。

    二、参看ExplorationJDKSource.java示例 此示例中定义了一个类A,它没有任何成员: class A { } 示例直接输出这个类所创建的对象

    程序源代码:

    public class ExplorationJDKSource {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            System.out.println(new A());
        }
    
    }
    
    class A{}

    程序运行截图:

    结论:前面示例中,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();

  • 相关阅读:
    PNG文件格式具体解释
    opencv2对读书笔记——使用均值漂移算法查找物体
    Jackson的Json转换
    Java实现 蓝桥杯VIP 算法训练 装箱问题
    Java实现 蓝桥杯VIP 算法训练 装箱问题
    Java实现 蓝桥杯VIP 算法训练 单词接龙
    Java实现 蓝桥杯VIP 算法训练 单词接龙
    Java实现 蓝桥杯VIP 算法训练 方格取数
    Java实现 蓝桥杯VIP 算法训练 方格取数
    Java实现 蓝桥杯VIP 算法训练 单词接龙
  • 原文地址:https://www.cnblogs.com/sist1437493141/p/4949668.html
Copyright © 2011-2022 走看看