美文网首页
Java基础 继承

Java基础 继承

作者: 白衬衫少年 | 来源:发表于2017-03-03 01:54 被阅读0次

    “简单不先于复杂,而是在复杂之后.” —— Alan Perlis

    2.jpg

    继承

    • 为什么要继承

    说到OOP(面向对象)的特点,就不得不提继承,他使代码拥有了其他非OOP所没有的一种独特性---可复用性。
    当你先创建了一个类之后,再创建一个新类,即使他和你之前的类有相似的功能,你还是需要重新编写此类。然而通过继承,你也许可以不这么做。


    • 继承确定了一种关系

    在继承关系里,被继承的类被称为父类,而继承的类就被称为子类。子类继承了父类所有的属性(尽管private成员被隐藏起来,并且不可访问)和方法,不仅如此,子类还可以根据自己的独特性,扩展属性和方法。

    代码
    class Person {
        public Person() {
    
        }
    }
    
    class Man extends Person {
        public Man() {
    
        }
    }
    

    类Man继承于Person类,这样一来的话,Person类称为父类(基类),Man类称为子类(导出类)。如果两个类存在继承关系,则子类会自动继承父类的方法和变量,在子类中可以调用父类的方法和变量。在java中,只允许单继承,也就是说 一个类最多只能显示地继承于一个父类。但是一个类却可以被多个类继承,也就是说一个类可以拥有多个子类。


    子类继承父类的成员变量

    当子类继承了某个类之后,便可以使用父类中的成员变量,但是并不是完全继承父类的所有成员变量。具体的原则如下:

    1.能够继承父类的public和protected成员变量;不能够继承父类的private成员变量;

    2.对于父类的包访问权限成员变量,如果子类和父类在同一个包下,则子类能够继承;否则,子类不能够继承;

    3.对于子类可以继承的父类成员变量,如果在子类中出现了同名称的成员变量,则会发生隐藏现象,即子类的成员变量会屏蔽掉父类的同名成员变量。如果要在子类中访问父类中同名成员变量,需要使用super关键字来进行引用。


    子类继承父类的方法

    1.能够继承父类的public和protected成员方法;不能够继承父类的private成员方法;

    2. 对于父类的包访问权限成员方法,如果子类和父类在同一个包下,则子类能够继承;否则,子类不能够继承;

    3.对于子类可以继承的父类成员方法,如果在子类中出现了同名称的成员方法,则称为覆盖,即子类的成员方法会覆盖掉父类的同名成员方法。如果要在子类中访问父类中同名成员方法,需要使用super关键字来进行引用


    重写父类方法
    • 注意事项

    子类方法访问权限大于等于父类方法权限;
    子类可以访问父类被重写的方法.


    继承特点:
    • 单继承

    单继承和多继承各自的优缺点:
    • 多继承复用性更高,单继承复用性低;
    • 多继承关系复杂且有菱形缺陷,单继承没有;

    相关文章

      网友评论

          本文标题:Java基础 继承

          本文链接:https://www.haomeiwen.com/subject/ttokgttx.html