一、final关键字
常量:在程序中元素的值是固定的是不可改变的。
1.final修饰的变量,其实都是常量,一但赋值就无法更改。
格式:final 数据类型 常量名=常量值;
注:常量名全部大写
2.final修饰方法中的参数被称为最终参数,无法在方法体中进行值的更改。
格式:public final 返回值类型 方法名(){}
3、final修饰的方法不能被重写
格式:public final 返回值类型 方法名(){}
4、final修饰类,类不能被继承
格式:final class 类名{}
//final修饰变量
final int AGE=19;
//final修饰方法
public final int test1(){}
//final修饰的类
final class Test1{}
二、抽象类
当一个类中没有足够的信息去描述一个具体的事物时,这个类就要定义为抽象类。
特点:
1、抽象类必须使用abstract关键字来修饰,
语法:访问修饰符 abstract class 类名{}
2、抽象类不能创建对象(实例化)
3、抽象类可以有构造方法
4、抽象类中可以有普通方法、静态方法、普通属性和静态属性
5、抽象类中还可以拥有抽象方法,抽象方法只有方法的声明,没有方法体。
语法:
访问修饰符 abstract 返回值类型 方法名(参数列表);
6、抽象类中的抽象方法,需要子类来实现;如果子类没有实现,子类也必须定义为抽象类,由子类的子类来实现
7、一个类中如果有一个方法是抽象方法,那么这个类一定是抽象类;但是,抽象类中不一定有 抽象方法。
三、接口
接口就是标准,负责定义一系列功能方法。
特点:
1、定义接口使用interface
语法:访问修饰符 interface 接口名{}
2、在接口中只有方法的声明,没有方法体。
3、接口中不能定义构造方法,也不能实例化接口对象
4、接口中定义的变量,其实都是静态的常量
完整的写法:访问修饰符 static final 数据 类型 常量=值;
5、接口由类来实现
语法: class 类名 implements 接口名{}
6、接口可以实现多继承,多个接口之间逗号分隔即可,弥补了Java中的单一继承问题
7、类也可以实现多个接口,接口之间用逗号分隔;但是当前类必须实现所有接口中的抽象方法 ,否则当前类就要定义为抽象类。
8、接口和抽象类,都是一种特殊的类。实现接口也是一种特殊的继承关系。
9、子类和父类之间的继承关系是:“is-a";实现类和接口之间是::"like-a"
10、接口中方法的访问修饰符,默认就是public