Java基础知识回顾—1
final关键字
fina修饰,恒定指向一个对象,无法改变指针(只能修改一次)
- final修饰符可修饰类、方法、变量
- final标记的类不能被继承
- final标记的方法不能被子类覆盖
- final标记的变量(成员变量或局部变量)就成为常量,只能赋值一次(只能一次被显式赋值,可在构造方法、静态代码块、非静态等当中)
- 形参定义成final也可以,这样就限定了不能再方法中修改形参的值
- 用public static final共同标记一个常量
补充
- 对于基本类型,final使得数值恒定不变
- 对于对象引用,final使得引用恒定不变
·· 一旦引用被初始化指向一个对象,就无法再把它改为指向另一个对象
·· 但是对象其自身确实可以被修改的
例子
-
String类是使用final修饰的,所以不能被继承
-
Object类中getClass使用final修饰的,所以无法覆盖
-
-
其他很多例子
抽象类
-
不允许被实例化
-
通过abstract关键字修饰
-
含有0个或多个用abstract修饰的方法(抽象方法)
-
抽象方法没有方法体
-
意义
·· 避免创建父类对象
·· 避免调用无意义的父类方法抽象类的子类
子类在继承抽象类时
- 可以实现父类中的抽象方法(将方法具体化)
- 如不实现,子类成为抽象类,用关键字abstract关键字修饰
接口
接口同普通类一样是一种类型
使用interface代替class定义
所有属性都是用public static final修饰的(public static final修饰默认省略)
所有的方法都是用public修饰的(public默认自动省略)
方法没有方法体
不允许有静态方法
注意
- 声明为一个接口类型的变量,可以将实现了对应接口的类的实例对象赋值给该变量。
- 在定义时,尽可能的考虑全面,将可能的接口方法定义完全。
- 当发现接口方法定义不完全的时候,通过接口继承,定义新的接口方法的方式来处理。
接口的实现
- 类可以实现一个或多个接口
- 实现接口通过关键字implements关键字
- 没有实现接口中全部方法的时候需要定义此类为抽象类
接口与多重继承
- Java中不允许多重继承(及同时继承两个或以上的类,这也是接口出现的一方面原因)
- 在需要多重继承的情况下,接口提供了一种替代方案
- 实现了多个接口的类生成的对象可以有多种类型
接口与抽象类
- 抽象类
- 可以定义非(static&final)的字段
- 可以定义方法实现
- 抽象类的一个公用就是通过子类化来实现代码共享
- 接口
- 定义的方法全部为abstract方法
- 一个类可以实现任意数量的接口,为不管这些接口之间的关系