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

相关推荐
软件开发技术局1 小时前
撕碎QT面具(8):对控件采用自动增加函数(转到槽)的方式,发现函数不能被调用的解决方案
开发语言·qt
周杰伦fans2 小时前
C#中修饰符
开发语言·c#
yngsqq2 小时前
c# —— StringBuilder 类
java·开发语言
赔罪3 小时前
Python 高级特性-切片
开发语言·python
星星点点洲3 小时前
【操作幂等和数据一致性】保障业务在MySQL和COS对象存储的一致
java·mysql
xiaolingting3 小时前
JVM层面的JAVA类和实例(Klass-OOP)
java·jvm·oop·klass·instanceklass·class对象
风口上的猪20153 小时前
thingboard告警信息格式美化
java·服务器·前端
子豪-中国机器人4 小时前
2月17日c语言框架
c语言·开发语言
夏天的阳光吖4 小时前
C++蓝桥杯基础篇(四)
开发语言·c++·蓝桥杯
追光少年33224 小时前
迭代器模式
java·迭代器模式