继承 2019-03-14

继承

定义:继承是从已有的类在创建新类的过程
1.三大特征
2被继承的类称为父类(超类),继承父类的类称为子类(派生类)
3.继承是指一个对象直接使用另一对象的属性和方法
4.通过继承可以实现代码重用,2冗余,李氏替换原则
5.继承一个父类,只能继承非私有的数据(属性和方法)
语法:[访问权限] class 子类名 extends 父类名{
类体定义;
}
protected(受保护的访问权限修饰符,用于修饰属性和方法,使用protected修饰的属性和方法可以被子类继承)

class Dog{
    private String name;
    private String sex;
    public void eat(){
        System.out.println("吃饭");
    }
}

class HomeDog extends Dog{
    // 类的定义
}
class HuskyDog extends Dog{
    // 类的定义
}

继承的限制:
1.Java只能实现单继承,也就是一个类只能有一个父类
2.允许多层继承,即:一个子类可以有一个父类,一个父类还可以有其他的父类
3.继承能继承非私有的属性和方法(显示继承:可以直接通过对象来操作)但私有的属性和方法也可以继承,但不可使用。(隐式继承:不可以通过对象来操作)
4.构造方法不能被继承
创建子类对象时,父类的构造方法也会被调用,为什么?
因为子类要使用父类的数据,那么就要通过父类的构造方法来初始化数据
如果创建子类对象时会调用父类的默认构造方法

继承小结

1.继承是发生在多个类之间
2.继承使用关键字extends
3.Java只能单继承,允许多层继承
4.被继承的类称为父类(超类),继承父类的类称为子类(派生类)
5.在父类的非私有属性和方法可以被子类继承
6.使用protected修饰的属性和方法可以被子类继承
7.构造方法不能被继承
8.创建对象会调用构造方法,调用构造方法不一定是创建对象
9.实例化子类对象,会先调用父类的构造方法,当父类中没有默认无参构造方法时,子类必需显示通过super(...)来调用父类的带参构造方法,只能在第一句
好处:
1.代码复用性
2.维护性
3.让类与类之间产生关系,是多态的前提
缺点:
增强了类与类之间的耦合性
开发原则,高内聚,低耦合

image.png

在子类进行实例化操作的时候,首先会让其父类进行初始化操作。之后子类再进行实例化操作。
子类的实例化过程:
子类实例化时会先调用父类的构造方法
如果父类中没有默认的构造方法,在子类的构造方法中必需显示的调用父类的构造方法
结论:
构造方法只是用于初始化类中的字段
以及执行一些初始化代码

调用构造方法并不代表会生public, protected, friendly, private的访问权限如下:


    关键字        当前类       同一package        子孙类       其他package 

    public             √            √                          √            √ 

    protected       √            √                          √            × 

    friendly          √            √                          ×            × 

    private           √            ×                          ×            × 

    不写时默认为friendly

    public声明的变量及方法,表明在整个包内包外都可使用。
    private 声明的变量及方法,只在声明的类内可以使用。
    protected包外不可使用。包内可以使用。
   

    不使用关键字默认为包内使用。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容