8、Java——面向对象:多态,引用数据类型:转型,抽象的,接口

 1多态

(1)一种事物的多种形态|多种表现形式,行为的多态,一个行为的不同的实现方式。

(2)多态的前提:类的继承|接口的实现。

(3)多态的最终体现:父类的引用指向子类的对象。

(4)多态调用:会调用子类中重写的方法。

(5)多态的实现效果:配合方法的重写,当父类引用指向不同的子类对象,同一个方法具有不同的实现方式-->行为多态。

(6)多态调用成员的特点:

      父类引用调用。

         成员变量:编译运行看父类|左边|类型。

成员方法:编译看父类|左边|类型。
运行找子类|右边|对象。

 

 

(7)注意: ①多态是行为的多态。

           ②多态如果不配合方法的重写没有意义。

           ③父类引用对子类新增内容不可见。

④如果多态想要有意义,需要配合方法的重写,多态才有意义。

(8)做题四大原则:

①继承链:自己没有找父。

       A

       |

       B

     /    \

    C     D

②编译看类型、确定方法,运行找对象。

③就近最优原则。

④父类引用对子类新增方法不可见,编译期间能够确定所调用的方法。

 

2引用数据类型 : 转型

    (2)向上转型 : 自动类型提升。

            Person p = new Student(); --> 多态。

(3)多态调用: 对子类新增内容不可见。

(4)向下转型 : 强制类型转换。

Student s = (Student)p;

通过s引用调用Student类型所有的内容。

(5)ClassCastException 类型转换异常,引用强转类型的时候,没有转为指向的子类对象类型,转为了其他子类类型,出现的异常。

(6)预防出出现类型转换异常->instanceof 运算符。

(7)引用 instanceof 类型:判断前面的引用是否指向后面类型的对象或者后面类型子类的对象,是->true  不是->false。

3、抽象的

1)抽象类: 被abstract修饰的类。

(2)抽象方法: ①被abstract修饰的方法。

               ②没有方法体。

               ③存在与抽象类中。

(3)开发部门:

        Develop 开发部  work()

        java攻城狮  work(){"服务器端开发"}

        web程序猿   work(){"客户端开发"}

(4)抽象类的特点:

        ①抽象类不能实例化。

        ②抽象类可以定义任意内容(属性,功能(抽象的方法,具体的方法))。

        ③抽象方法必须要求被重写。

        ④抽象类使用: 通过具体子类对象使用。

            具体子类: 重写所有的抽象方法 + 按需新增。

            抽象子类: 按需重写抽象方法 + 按需新增。

        ⑤一个抽象方法一旦被重写,可以不再被重写,根据需求决定。

        ⑥abstract不能与private,final,static,native 一起使用。

        ⑦抽象类可以实现多态。

4接口

(1)接口可以理解为是一个特殊的抽象类

(2)功能的集合,引用数据类型,接口可以帮助定义规范,解耦-->降低耦合度,类是单继承,接口多实现的

    (3)定义 :interface 定义接口

(4)组成:

①jdk7及之前:

公共的静态的常量

           public static final--> 修饰符可以任意省略

公共的抽象的方法

           public abstract --> 修饰符可以任意省略

②jdk8中新增:

            1.静态方法 : 可以定义方法体

                  使用: 通过接口名使用

2.默认方法 : 可以定义方法体

                显示的被default修饰

               使用: 通过实现类对象使用

③jdk8及之后:

使用:

        a.接口不能实例化

        b.接口需要通过实现类的对象使用

        c.父类需要通过子类继承  extends  -->父类中的成员,子类继承父类有权可以直接使用,接口需要通过实现类去实现  implements --> 因为接口中几乎都是抽象方法没有方法体,需要实现类自己实现方法体,所有叫做实现,接口的实现与类的继承很像,都拥有了父类的成员使用权,或者拥有接口中定义的功能,但是一个侧重点在拿过来就用,一个侧重点在拿过来要实现才能用

        d. 接口的使用:

           具体的实现类 : 重写所有的冲向方法 + 按需新增

           抽象的实现类 : 按需重写 + 按需新增

        e.接口可以多实现,类只能单继承

        f.如果一个类同时继承父类实现接口,要求先继承后实现

(5)注意:

        ①.父类与接口无法完全相互代替,如果可以建议使用接口,因为接口可以多实现非常灵活

        ②类与类之间只能继承

          类与接口之间,只能是类实现接口

          类与类之间只能单继承

          类与接口之间可以多实现

          接口与接口之间,可以多继承

③接口可以实现多态  接口引用指向实现类对象

 


posted @ 2021-07-25 20:54  孤影_空白  阅读(113)  评论(0编辑  收藏  举报