• 技术文章 >Java >java教程

    02.Java 基础 - 继承

    黄舟黄舟2017-02-27 10:09:29原创654

    基本概念

    class Parent {
    }
    
    class Son extends Parent {
    }

    IS-A 关系

    Java 中的继承关系属于 IS-A 关系。

    IS-A 关系如何理解,取上面的栗子:S 继承了 P,我们可以说 S 是 P 。

    在继承关系中,继承者完全可以替换被继承者,反之则不可以。一句话,我们“可以把人当牲口使,不能把牲口当人使”。


    构造器与继承

    一个类通过调用构造函数实现初始化。对于继承来说,子类、父类的构造函数具有以下特点:

    下面通过一个例子来探究:

    class Parent {    // 无参构造器,即隐式构造器。
        public Parent() {
            System.out.println("initializing Parent");
        }
    }
    
    class Son extends Parent {    // 带参构造器,属显式构造器
        public Son(String name) {        // 关键 -> 由于父类是隐式构造器,这里可以不调用。
            System.out.println("initializing "+name);
        }
    }
    
    class Grandson extends Son {    public Grandson() {        // 关键 -> 父类是显式构造函数,必须手动调用
            super("son");
            System.out.println("initializing Grandson");
        }
    }public class Test {
        public static void main(String[] args) {
            Grandson grandson = new Grandson();        // 关键 -> 构造器调用顺序总是从父类依次往下进行的,打印内容如下:
            // initializing Parent
            // initializing Son
            // initializing Grandson
        }
    }

    基本概念

    class Parent {
    }
    
    class Son extends Parent {
    }

    IS-A 关系

    Java 中的继承关系属于 IS-A 关系。

    IS-A 关系如何理解,取上面的栗子:S 继承了 P,我们可以说 S 是 P 。

    在继承关系中,继承者完全可以替换被继承者,反之则不可以。一句话,我们“可以把人当牲口使,不能把牲口当人使”。


    构造器与继承

    一个类通过调用构造函数实现初始化。对于继承来说,子类、父类的构造函数具有以下特点:

    下面通过一个例子来探究:

    class Parent {    // 无参构造器,即隐式构造器。
        public Parent() {
            System.out.println("initializing Parent");
        }
    }
    
    class Son extends Parent {    // 带参构造器,属显式构造器
        public Son(String name) {        // 关键 -> 由于父类是隐式构造器,这里可以不调用。
            System.out.println("initializing "+name);
        }
    }
    
    class Grandson extends Son {    public Grandson() {        // 关键 -> 父类是显式构造函数,必须手动调用
            super("son");
            System.out.println("initializing Grandson");
        }
    }public class Test {
        public static void main(String[] args) {
            Grandson grandson = new Grandson();        // 关键 -> 构造器调用顺序总是从父类依次往下进行的,打印内容如下:
            // initializing Parent
            // initializing Son
            // initializing Grandson
        }
    }

    以上就是02.Java 基础 - 继承的内容,更多相关内容请关注PHP中文网(m.sbmmt.com)!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:Java,继承
    上一篇:01.Java 基础 - 封装 下一篇:03.Java 基础 - 多态
    Web大前端开发直播班

    相关文章推荐

    • Java经典技巧之实现多线程、线程同步• Java归纳总结之数组详解• 详细整理java枚举的使用总结• Java设计模式解析之适配器模式(实例详解)• 一起聊聊Java常用数据类型的输入输出

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网