抽象类与接口(包含final关键字)
final关键字
final关键字声明后类不能被继承,方法不能被重写,变量(final声明时一般字母全大写)不能被修改。直接举例子:
图片1:Person被声明 Man不能再继承它;图片2:方法tell被声明 子类不能重写tell;图片3:变量A被声明,不能进行第二次修改。
抽象类几个规则:
- 包含抽象方法就是抽象类。
- 声明而未被实现的抽象方法必加关键字abstract声明。
- 子类的父类是抽象类时,子类必须重写父类的所有方法。
- 抽象类不能直接实例化,必须通过子类进行。
例子:
旁边都有注释解释。。。。。。。。。。。。
接口
接口就是特殊的类:里面全是全局常量与公共方法。
整体格式:
interface interfaceName {
全局常量
公共方法
}
规则:必须通过其子类实现,使用关键字implements,接口可以多实现(这点与继承的单线性不同)
代码运用:
package javalearn;
interface Person{//一个接口
public static final int A=100;//这便是一个全局常量(是常量就要赋初值),公共 静态,不可修改。
public static void tell(){//不是抽象方法必须加static设置为公共方法
}
public abstract void say();//抽象方法
}
interface People{//一个接口
public static final int B=100;//这便是一个全局常量(是常量就要赋初值),公共 静态,不可修改。
public abstract void take();//抽象方法
}
class Man implements Person,People{//再用一个类利用implements来实现接口,可以多实现接口中间用逗号隔开
public void say(){//必须重写父类的所有抽象方法方法
}
public void take(){
}
}
public class Learn {
public static void main(String[] args) {
// TODO Auto-generated method stub
Man a= new Man();
a.say();//必须通过子类实例化来进行操作
}
}
认真看代码注释解释呦。。。。。。。。。。。。。。。。。。。
可以同时继承父类和接口哦,写法:class son extends father imimplements Person,People{ }
其他规则不变
而且接口类不能继承其他类但能继承多个,多个,多个接口哦,写法:class 接口1 extends 接口2,接口3{ }