final主要用于修饰类,方法以及属性
当用于修饰类时,则这个类不能被子类继承,换而言之该类没有子类
当用于修饰方法时,该方法也是不能被复写的
当用于修饰属性时,同理属性值不能被更改
抽象类,当存在抽象方法时,该类就是抽象类,需要加abstract修饰符,另外该抽象方法必须需要被继承它的子类所重写。
接口可以多实现,可以理解成一个特殊的类,只是这个类里面是由常量以及公共的抽象方法组成的
Interface demo{ public static final int AGE = 10; public abstract void tell() {} } Interface demo2{ public abstract void say() {} } //一个接口可以继承多个接口,弥补了单继承的不足 interface demo3 extends demo,demo1{ } class M{ public abstract void printf(){} } class A extends M implements demo,demo2 { //必须复写tell方法 public void tell(){} public void say(){} } class go { public static void main(String[] args) { A a=new a(); a.tell(); a.say(); a.printf(); } }
一个接口可以实现单继承超类,但是可以多继承接口,可以弥补单继承的不足
一个类可以继承多个接口,单继承超类
接口和抽象类的区别:
继承接口必须复写里面所有的方法,并且接口是没有私有变量或者方法的,但是抽象类可以有自己的私有变量或者方法,另外只必须复写其中的抽象方法,其他可以看程序的需要适当复写。