2021/8/18 JavaOop 第二章 继承

面向对象的特征之二:继承性

一丶继承的好处:

        ①:减少了代码的冗余,提高了代码的复用性

        ②:便于功能的扩展

        ③:为之后多态性的使用,提供了前提

二丶继承的格式:class A extends B{}

        A:子类丶派生类丶subclass

        B:父类丶超类丶基类丶superclass

1丶体现:一旦子类A继承父类B以后,子类A中就获取了父类B中声明所有的结构丶属性丶方法

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

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

        子类和父类的关系,不同于子集和集合的关系。

        extends:延展丶扩展

三丶java中关于继承性的规定

        ①:java只支持单继承和多层继承,不允许多重继承

        ②:一个子类只有一个父类

        ③:一个父类可以派生出多个子类

                class SudDemo extends Demo{}    ✔

                class SudDemo extends Demo1,Demo2{}   ✘

 

        ④:子父类是相对的概念图 

        

         ⑤:子类直接继承的父类称为:直接父类, 间接继承的父类称为:间接父类

         ⑥:子类继承父类以后,就获得了直接父类以及所有间接父类中声明的属性和方法

         ⑦:Object类是所有类的父类

         ⑧:当父类没有定义构造器默认空参构造器

         ⑨:父类有定义带参构造器时继承的子类必须赋值父类的带参构造器

                                               可以使用super关键字

                                           public Cat(){super("悠米");}

四丶Object类

        1丶如果我们没有显式的声明一个类的父类的话,则此类继承于java.lang.Object类

        2丶所有的java类(除java.lang.Object类之外)都直接或间接的继承于java.lang.Object类

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

五丶子类方法的重写与方法的重载    

        1丶对父类继承的方法重写一遍

        2丶子类中 可以用super->调用父类的成员(属性和方法)

        3丶重载:跟父类方法名一致,形参不一致

        4丶重写:方法名,参数跟父类一致方法内容不同

(Overloading):重载:“如果一个类有多个名字相同但参数个数不同的方法,我们通常称这些方法为方法重载。 ”我面带着朴实无华的微笑继续说,“如果方法的功能是一样的,但参数不同,使用相同的名字可以提高程序的可读性。”

(Overriding):重写:如果子类具有和父类一样的方法(参数相同、返回类型相同、方法名相同,但方法体可能不同),我们称之为方法重写。 方法重写用于提供父类已经声明的方法的特殊实现,是实现多态的基础条件。”

六丶抽象类

        1丶抽象类的定义:用abstract修饰的类称为抽象类。抽象就是不具体的意思。作为中层或者顶层设计/任务的下发

        2丶抽象类有以下几点特点:

                ①:含有抽象方法的类必须声明为抽象类

                ②:抽象类可以声明构造方法但不能被实例化

                ③:抽象方法不能有方法体,即抽象类中的抽象方法只能进行声明,不能有具体的实现:例:abstract public String getUserName();

                ④:子类继承抽象类即抽象类是父类,子类必须重写抽象类的抽象方法,否则子类本身也必须声明为抽象类

                ⑤:所有的动作丶业务丶功能靠new子类来实现

                ⑥:抽象类中可以存在属性和方法(该方法可以不是抽象方法),即抽象类中可以有非抽象的方法和属性

                ⑦:abstract 抽象方法,普通类不能拥有

         3丶抽象类中的final关键字

                  ①:final:常量,相当于c#中的const

                  ②:声明的时候必须要赋值

                  ③:属性不能被更改

                  ④:可以修饰方法,修饰后的方法子类继承后就不能被重写

                  ⑤:可以修饰类,修饰后的类不能被继承

                  ⑥:fianl不能加在抽象的方法中。继承的子类不能重写方法,目标相反程序报错

练习小作业:

        1.请用继承体系创建出以下类:

                                       人类

                        学生类                教授类

                        属性 方法自定义。

        2.完成以下功能:

                学生类的学习方法重载出三个

                教师类的授课方法重载出三个

                并且人类的构造方法重载出两个

        3.创建一个学校类

                学校类有方法输出:xx老师在给xx学生上课


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Abcdzzr

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值