zoukankan      html  css  js  c++  java
  • 二、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();
        }
    }

    输出结果:

    动物构造器

    金鱼,黄色

  • 相关阅读:
    Shell编程进阶 1.2 shell结构及执行
    LNMP 1.6 常见的502问题解决
    关于贴图看不到。显示是白色或者其他。
    windows 任务栏图标宽度固定
    Install Oracle Java JDK/JRE 7u55 on Fedora 20/19, CentOS/RHEL 6.5/5.10
    盘点天龙历史:七年以来所有资料片
    linux shell 逻辑运算符、逻辑表达式详解
    vim 把满足条件的数字进行加上一些数字
    win7 一些快捷系统工具命令
    Linux下用C读取配置文件。类似ini这样。
  • 原文地址:https://www.cnblogs.com/sunNoI/p/8977992.html
Copyright © 2011-2022 走看看