【Java进阶】final及抽象类
final关键字(※)
final可以修饰类、修饰方法、修饰变量。
被final修饰的类,
不能被其他类继承;被final修饰的方法,
不能被子类重写;
重写了父类就会报错
final修饰变量
- 如果修饰的是基本数据类型:
数据值不能改变- 如果修饰的是引用数据类型:
地址值不能改变,但是地址值中的数据内容可以改变;
Examples
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 // 1, 父类的方法用final修饰,子类就不能重写
// 创建子类对象,调用final的abc方法, abc方法是父类的
Zi z = new Zi();
z.abc();
// 2, final修饰的变量,不能改变值
final int a = 5;
// a = 6;
// 3, final修饰的引用数据类型(数组, 集合等),不能修改地址值
final int[] arr = {2, 5, 8};
// arr = new int[3]; 报错,因为对象变化了,地址值也会变化,跟final违背
// 但是可以更改地址值内的数据
arr[1] = 10;
System.out.println(arr[1]);
Important
- 如果被Static final 修饰, 例如
1
2
3 public class Constant(){
public static final String ip = "192.168.88.100";
}则被称为常量, 通常用于记录系统的配置信息.
抽象类
由于接口的存在, 抽象类已经很少使用了.
概述
1 | 当我们无法详细的描述一类事物的具体功能的时候,可以采用抽象类的形式描述这种事物具备的特征和一定具有的功能,具体的功能内容将来由子类负责完成,次数就可以使用抽象类的技术描述这种事物; |
为什么要使用抽象类(※)
1 | 因为使用抽象类的抽象方法描述一些功能的时候,可以"强制"子类必须完成某些功能! |
什么时候可以使用
1 | 凡是遇到无法详细描述的类,都可以使用抽象类,或者一些特定的设计模式,例如: 模版设计模式,适配器设计模式... |
如何使用
1 | 使用abstract关键字修饰类或方法即可; |
1 | public abstract class Animal { |
注意Notice

All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.



