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

相关推荐
星火开发设计14 分钟前
C++ 数组:一维数组的定义、遍历与常见操作
java·开发语言·数据结构·c++·学习·数组·知识
码道功成14 分钟前
Pycham及IntelliJ Idea常用插件
java·ide·intellij-idea
TTGGGFF38 分钟前
控制系统建模仿真(一):掌握控制系统设计的 MAD 流程与 MATLAB 基础运算
开发语言·matlab
消失的旧时光-194341 分钟前
第四篇(实战): 订单表索引设计实战:从慢 SQL 到毫秒级
java·数据库·sql
2501_944424121 小时前
Flutter for OpenHarmony游戏集合App实战之贪吃蛇食物生成
android·开发语言·flutter·游戏·harmonyos
それども1 小时前
@ModelAttribute vs @RequestBody
java
雨中飘荡的记忆2 小时前
深度详解Spring Context
java·spring
Tao____2 小时前
JAVA开源物联网平台
java·物联网·mqtt·开源·ruoyi
Lhuu(重开版2 小时前
JS:正则表达式和作用域
开发语言·javascript·正则表达式
yqd6662 小时前
SpringSecurity的使用
java·spring