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

相关推荐
容器( ु⁎ᴗ_ᴗ⁎)ु.。oO12 分钟前
java中的定时器
java·开发语言
m0_5474866613 分钟前
一道C语言关于距离的期末题及答案
c语言·开发语言
蹊黎15 分钟前
C++模版初阶
开发语言·c++
山川尔尔_15 分钟前
JS手写-this绑定实现
开发语言·javascript·ecmascript
YYDS31419 分钟前
C++各类函数评点+详解
开发语言·数据结构·c++·算法·贪心算法·动态规划
薯条不要番茄酱1 小时前
数据结构-5.二叉树
java·开发语言·数据结构
YAy172 小时前
CC3学习记录
java·开发语言·学习·网络安全·安全威胁分析
代码小鑫2 小时前
A035-基于Spring Boot的企业内管信息化系统
java·开发语言·spring boot·后端·spring
cleverpeople2 小时前
11.15作业
c语言·开发语言·算法
_.Switch2 小时前
Django SQL 查询优化方案:性能与可读性分析
开发语言·数据库·python·sql·django·sqlite·自动化