二、final修饰方法
final修饰的方法不能被子类覆盖,但是可以被子类使用和重载。
class Aa{ public int dInt = 0; public int getdInt() { return dInt; } public final void setdInt(int dInt) { System.out.println("before set:Aa dInt = "+this.dInt);//必须加this,不加就会使用传入的dInt this.dInt = dInt; System.out.println("after set:Aa dInt = "+dInt); } }class B extends Aa{
public B(){ super.setdInt(1);//正确,可以使用父类final方法 setdInt();//调用本类 }public void setdInt(int dInt) { this.dInt = dInt; }//编译错误,不许覆盖final方法public void setdInt() {
System.out.println("before set:super dInt = "+dInt);
super.dInt++;
System.out.println("after set:super dInt = "+dInt); }//正确,可以重载父类final方法
}
public class TestFinal { public static void main(String[] args) { B b = new B();/*输出结果为before set:Aa dInt = 0 after set:Aa dInt = 1 before set:Aa dInt = 1 after set:Aa dInt = 2*/ } }