二、Java面向对象(8)_继承思想——子类初始化过程

2018-05-01

 

子类初始化过程

构造器的调用遵循以下的顺序:

(1):调用基类构造器。这个步骤会不断地反复递归下去,首先是构造这种层次结构的根,然后是下一层导出类,等等,直到最低层的导出类。

(2):按声明顺序调用成员的初始化方法。 .
(3):调用导出类构造器的主体。(也就是文中的main方法中的内容)

这样做的最终目的:让方法中的所有成员变量都得到初始化。 

创建子类对象之前会先创建父类对象

调用子类构造器之前,在子类构造器之前会先调用父类的构造器,默认调用的是无参构造器

如果父类不存在可以被子类调用的构造器(父类所有的状态和行为搜用private修饰),则不存在子类。(事实上,这种情况基本不存在)

如果父类没有提供无参的构造器,此时子类必须显示通过super语句去调用父类带参数的构造器。(看图)

 

代码举例:

//动物
class Animal
{
    private String name;
    private int age;

    Animal(String name, int age){
        
        System.out.println("动物构造器");
        this.name = name;
        this.age = age;
    }
    public String getName(){
        return name;
    }
}
//
class Fish extends Animal
{
    private String color;//颜色

    Fish(String name, int age, String color){

        
        super(name,age);//显示调用构造器,super调用父类构造器,必须放在子类构造器第一句话。
        this.color = color;
        //super();//隐式调用当前对象的父类的无参构造方法
    }
    public void say(){
        System.out.println(getName() + "," +this.color);
    }
}


//子类初始化过程
class SubClassInitDemo 
{
    public static void main(String[] args) 
    {
        //创建一个鱼对象
        Fish f = new Fish("金鱼", 5, "红色");
        f.say();
    }
}

输出结果:

动物构造器

金鱼,黄色

猜你喜欢

转载自www.cnblogs.com/sunNoI/p/8977992.html