09、多态,抽象类,接口

01、多态的概述与前提

        一、多态

                对象在不同的时刻表现出不同状态

        二、针对引用类型

                编译期间状态

                运行期间状态

                例子:Person p=new Person();水,水蒸气,冰)

        三、多态的前提条件

                A:要有继承关系

                B:要有方法重写

                C:要有父类对象指向子类对象

02、多态的成员特点

        A:成员变量:编译看左边,运行看右边

        B:成员方法:编译看左边,运行看右边

        C:方法有重写,而变量没有

03、多态的弊端及相应的解决方案

        一、多态的弊端:

                父类引用不能使用子类特有的功能

                解决方案:通过子父类间的类型转换

        二、基本类型

                隐式转换:从小到大

                强制转换:从大到小

        三、引用类型

                向上转型:从小到大

                向下转型:从大到小

04、多态中的类型转换问题

        Java.lang.ClassCastException:类型转换异常。

        类型不匹配:你存储的是Cat,想转换成Dog,肯定是不行的。

05、多态的好处(扩展性和可维护性)

        多态的好处:为了提高代码的扩展性和可维护性

06、抽象类的概述

        一、通过“猫吃鱼,狗吃肉”这两个类来引出一个问题

                A:class Cat { eat(); }  class Dog { eat(); }

                B:这两个类能不能抽取相同的内容呢?能。

                C:因为他们的方法声明都是相同的,所以我们就抽取了方法的声明

        二、针对没有方法的方法体,Java提供了一种表示形式:抽象方法

        三、这个时候就有了一个关键字来表示抽象的意思:abstract。

07、抽象类的基本特点

        一、抽象类的由来

                从很多对象中抽取方法声明,从而定义在一个新的类中

                没有方法体的方法被称为抽象方法,有抽象方法的类称为抽象类

        二、抽象类的特点

                A:抽象方法和抽象类用关键字abstract修饰

                B:有抽象方法的类一定是抽象类(或者接口),但是抽象类中不一定有抽象方法

                C:抽象类不能实体化(不能被定义)

                D:如果一个类继承抽象类,那么

                        1.这个类本身也是抽象类

                        2.这个类重写父类的所有抽象方法

        三、抽象类的作用

                在继承中,我们为什么有时候会选择父类是抽象类呢?

                强制要求子类必须完成某些功能

08、抽象类的成员特点

        A:成员变量:可以有成员变量,也可以有成员常量

        B:构造方法:有构造方法

                疑问:既然不能被实例化,那么有构造方法有什么用呢?

                答:可以用于子类访问父类数据前,对父类进行初始化

        C:成员方法:可以有抽象方法,也可以有非抽象方法

                1.抽象方法是为了要求子类做某些事情

                2.非抽象方法是为了提高代码的复用性,被子类继承

09、接口概述

        引言:

                抽象类例子:abstract class Animal {public abstract void eat0;}这个抽象类中,只有抽象方法。针对这种情况,java就提供了一种更加抽象的表现形式:接口
                类,我们知道用class表示。那么接口用什么表示呢?interface.这样的话,我们就可以把上面的抽象类改写interface Animal { public abstract void eat();}

        一、接口的使用

                有了接口该怎么使用?

                        答:必须也要有具体的类来实现

                用那个关键字来实现呢?

                        答:implement

        二、接口的格式

                class 类名 implements 接口名 {。。。}

        三、接口的实现

                A:普通实现:Catc= new Cat();    Dog d=new Dog();

                B:接口多态:Animal a=new Cat();     a = new Dog();

10、接口的基本特点

        A:接口不能被实例化

        B:接口中的方法

                1.要么被子类重写

                2.要么子类也是抽象类

11、接口的成员特点

        A:成员变量

                接口中只有常量,因为接口的成员变量有默认修饰符:public static final

                推荐:永远自己给出修饰符

        B:构造方法

                接口没有构造方法

                任何类如果没有继承父类,那么这个类就继承Object类

        C:成员方法:

                接口中的方法都是抽象方法,因为接口中的成员方法有默认修饰符:pubic abstract

                推荐:永远自己给出修饰符

        总结:接口中有切只有常量以及抽象方法 

12、类与接口的关系

        所有类都直接或者间接的继承自Object类。0bject类是所有类的超类

        A:类与类的关系

                继承关系。而且只能单继承,可以多层继承。

        B:类与接口的关系

                可以单实现,也可以多实现。并且还可以在继承一个类的同时,实现多个

        C:接口与接口的关系

                继承关系。可以单继承,也可以多继承。

13、接口的思想特点

        A:接口是对外暴漏的原则。

        B:接口是程序对外的功能扩展。

        C:接口的出现降低耦合性。

        D:接口可以用来多实现。

14、抽象类和接口的区别

        A:成员特点

                抽象类

                        成员变量:可以是变量,也可以是常量。

                        构造方法:有构造方法。

                        成员方法:可以是抽象方法,也可以是非抽象方法。

                接口

                        成员变量:只能是常量。默认修饰符 public static final

                        成员方法:只能是抽象方法。默认修饰符 public abstract

        B:关系特点

                类与类:继承关系,只能单继承,可以多层继承

                类与接口:实现关系,可以单实现,也可以多实现。还可以在继承一个类的同时,实现多个接口。

                接口与接口:继承关系。可以单继承,也可以多继承。

        C:设计理念的区别

                抽象类被继承,这个类中定义的是整个继承体系的共性内容,体现的关系:is a

                接口被实现,这个接口中定义的是整个体系的扩展内容,体现的关系:like a

                

                

        

  • 17
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

记乐

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

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

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

打赏作者

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

抵扣说明:

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

余额充值