0


[JAVASE] 类和对象(五) -- 抽象类和接口

目录


一. 抽象类

1.1 抽象类的定义

如果一个类中没有包含足够的信息来描绘一个具体的对象, 那么这个类就可以被定义为抽象类. (其实就是父类)

1.2 抽象类的实现

使用 abstract 关键字 来修饰抽象类, 以及抽象方法.

1e9b3624d0d84903a5394850e9d5c4c9.png

1.3 抽象类的作用

**a. **

抽象类就是用来检查父类中的抽象方法有没有在子类中被重写.

17f1a9957d3c4e1e98e21a82c858fc0c.png

(很多语法的出现就是用来提前发现问题的)

**b. **

抽象类 就是为了被继承的.

**c. **

抽象方法 就是为了被重写的.

1.4 抽象类的注意事项

a.

如果一个类是抽象类, 可以不必在抽象类中 实现 抽象方法.

但是,如果一个类中存在抽象方法, 那么, 这个类 必须被定义为抽象类.

b.

在抽象父类中实现了抽象方法, 那么在它的普通子类中必须重写抽象方法, 在它的抽象子类中不必重写抽象方法.

c.

抽象类不能够被实例化(因为抽象类不能够描述一个具体的对象)

d18743536a2d423ea78550064dac9dac.png

d.

抽象方法需要满足重写的要求.

(抽象方法不能被 static final private 修饰,

子类重写方法的访问权限 >= 父类重写方法的访问权限)

e.

abstract 与 final 是不能共存的.

(final 修饰的类是密封类, 不能够再被其他类继承. abstract 修饰的抽象类就是用来被继承的.

final 修饰的方法是密封方法, 是不可变的, 不能够被重写. abstract 修饰的密封方法就是用来被重写的.)

23aad2c83488407ab1cd37b6970337bc.png

f.

在抽象类中可以实现 普通成员变量 和 普通成员方法 以及 构造方法(因为存在普通成员变量).

d045d90504a54ad498c7aa2d29f80422.png


二. 接口

2.1 接口的定义

接口是多个类的公共行为规范.

接口的含义是: ... 具有...的特性.

2.2 接口的实现

a.

使用** interface **关键字来修饰接口.

5282e09afc514e4aad63231465d52083.png

b.

使用** implements** 来实现接口

50d5e60d6aaa4d089c093a3a816e7379.png

2.3 接口的作用

解决了 JAVA 中不能够 多继承(一个子类继承多个父类) 的问题.

e9ccccbef9cf4d8d91a2a27f4fb19dd3.png

2.4 接口的注意事项

a.

接口中的属性 默认被** public static final **修饰.(属于类的静态常量)

d973ccf933bf45cc821ad1e79b3b62fc.png

(以上5种方式定义的属性, 都是被public static final 修饰)

b.

接口中的成员方法 默认被** public abstract **修饰.

5697a078c87e476692104e640c5a5bdc.png

c.

接口中可以实现 非抽象方法(有具体实现的方法), 但是必须被 static 或者 default 修饰.

941edd198eba438cac1c6a78c7941d7d.png

d.

接口中不能够 有 构造方法.(因为接口中 的属性都是 静态常量, 根本就不需要调用构造方法来进行初始化)

a15918f009ba4b17b35df12c124aa21e.png

e.

接口不能够被实例化.

(因为在接口中不允许实现构造方法, 所以无法实例化对象

其次, 接口本质上也是抽象的, 不能够被实例化).

1e5a505099b84975b54dd198cc8cb93d.png

f.

接口之间可以进行合并.(使用** extends **关键字来实现)

b49e138919684d3d871c110849748cbe.png


三. 总结

a. 抽象类就是用来 观察父类中的抽象方法 有没有 在子类中被重写.

b. 抽象类的注意事项是 重点.(需要经常回顾)

c.** 接口 的含义是: ...具有...的特性**.

d. 接口解决了 java 中不能够多继承的问题.

e. 接口的注意事项也是重点(需要经常回顾)

标签: java 开发语言 jvm

本文转载自: https://blog.csdn.net/nmbg11/article/details/139073738
版权归原作者 NMBG22 所有, 如有侵权,请联系我们删除。

“[JAVASE] 类和对象(五) -- 抽象类和接口”的评论:

还没有评论