final关键字
修饰类:不能被继承
修饰方法:不能被重写
修饰局部变量或成员变量:不能被改变
注意:
修饰成员变量的时候,声明时赋值,或在构造方法里赋值
系统不会对final成员变量赋默认值
常量
一旦赋值不能再改变
标识符全部大写,单词用下划线连接
注意如果常量是类的成员变量,建议加static修饰符,称为类常量
接口
接口对类来讲是一套规范或一套行为协议
接口不是类不能被实例化
interface 接口名{
常量(默认修饰符,public,static,final)
抽象的方法(默认修饰符 public abstract)
}
通过类实现接口
class 类名 implements 接口名{
}
实现一个接口意味着,重写这个接口中的全部抽象方法,或者实现部分方法,再把自己声明为抽象的
一个类可以实现多个接口
class 类名 [extends 父类名] implements 接口名1,接口名2…{
}
接口可以继承其他接口
interface 接口名 extends 接口名1,接口名2…
作用:为一个接口增加新的方法声明,也可以将几个接口合并为一个接口
好处:在不同的类型中抽取了共同的行为
设计原则:针对接口编程,而不是针对实现编程
接口作为方法返回值类型的意义:实际是把接口的实现类对象返回给调用者
Java8中新增了默认方法,默认方法允许接口定义方法默认实现,而所有子类都拥有该方法。
interface 接口名{
常量(默认修饰符,public,static,final)
抽象的方法(默认修饰符 public abstract)
默认方法 default 方法返回值类型 方法名(参数列表){方法体语句}
}
好处:提供了一种新的拓展接口的方法,而不破坏原有的代码
注:默认方法在子类是可以重写的