二、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*/ } }

本文详细介绍了final修饰符在Java中的使用方法,特别是当其用于修饰方法时的效果:阻止子类覆盖该方法,但允许子类重载。通过具体示例展示了如何在父类中定义final方法,并在子类中正确调用或尝试覆盖这些方法。
777

被折叠的 条评论
为什么被折叠?



