何先振第12期:java基础之面向对象的继承性

本文详细介绍了Java面向对象的继承性,包括其优势、语法结构、子类与父类的关系,以及Java中的单继承规定。重点讨论了子类如何继承父类的属性和方法,以及私有属性的继承情况。下期将讲解方法的重写。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        大家好,我叫何先振。今天让我们接着讲Java的面向对象。本期的讲解是接着前面第9和10讲的Java面向对象知识,如果前面的两讲没看建议先看完前面的两讲。

一.面向对象的继承性

1.继承的好处:

        减少了代码的冗余、便于功能的扩展、为之后的多态性的使用提供了前提。

2.继承的格式:

        class A extends B{ }

        例如:学生类继承了人类。

        那么学生类就有了人类的属性和方法。例如:Person类有名字、年龄的两个属性。

        

        我创建了学生类的对象,因为学生类用extends继承了人类,就可以使用人类的属性和方法。

        A:子类、派生类、subclass。例如:

        Student类就叫做子类、或者叫派生类、或者叫subclass

        B:父类、超类、基类、superclass,例如:

        Person类就叫做父类、或者叫超类、或者叫基类、superclass。

        体现:一旦子类A继承父类B以后,子类中就获取了父类B中声明的所有属性和方法。Student类可以使用父类Person的属性和方法。

        ebb24ca5d3a5d81fc200a3a0779eb0a1.png

        特别的,父类中声明为private的属性和方法,子类继承父类以后,仍然认为获取了父类中私有的结构。只是因为封装性的影响,使得子类不能直接调用父类的结构而已。

        父类中Person的name属性是私有的,并不影响Student类的继承。

        182a5f4a00da1e0f9693bbae61c48a40.png

        Student还是继承了name属性和get,set方法。只是因为封装性的原因,测试类ExtendsTest不能直接调用属性,而是通过set赋值、get获取。

        5d1cb3895a3fd9c8727466fa46eccfa3.png

        

        子类继承父类以后,子类还可以声明特有的属性和 方法。实现功能的扩展。

        继承了Person,还可以写一些Person类没有的方法和属性。实现了Student类功能的扩展。

        8a0ac1b744aa968fe8ccaa28d71f2bc3.png

        子类和父类的关系,不同于子集和集合的关系。这里的子类功能会更丰富。因为extends意思本身就有延展、扩展的意思。

3.Java中关于继承的规定

        一个类可以被多个子类继承。

        Student类可以继承Person。

        Worker类也可以继承Person。

        

        Person可以被多个类继承。

        Java中类的单继承性:一个类只能有一个父类。

        一个类只有一个父类,不能继承多个父类,就像一个儿子只能有一个父亲。

        

        一个子类有多个父类是不允许的。

        子父类是一个相对的概念,Java可以支持多层继承。

        比如学生类继承人类,高中生类继承学生类。那么高中生继承了学生类,学生类继承了人类。人类>学生类>高中生类。高中生类也可以使用人类中的方法和属性。

                

        子类直接继承的父类叫直接父类。例如:HighStudent继承了Student。

        间接继承的父类叫间接父类。例如:Student继承了Person,HighStudent继承了Student,那么HighStudent的间接父类是Person

        子类继承父类以后,就获取了直接父类以及间接父类中声明的属性和方法。

        可以使用间接父类的属性和方法。

        如果我们没有显式的声明一个类的父类的话,则此类继承于java.lang.Object类。可以使用之前Eclipse的快捷键Ctril+T来获取类的继承关系结构。Person类继承了Object类。

        5ce47122623cec055a4868aa1bca4a0c.png

        所有的类都直接或者间接的继承了Object(除本身java.lang.Object类)。

        意味着,所有的java类具有java.lang.Object类声明的功能。

        以上是本期内容, 下期讲Java面向对象方法的重写。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值