final方法
表示这个方法不可以在子类中覆盖。
例如,下例,类B编译不会通过,因为它试图覆盖父类中的一个final方法。
父类:
public class A{
public final void methodA()
{...}
}
子类:
public class B extends A{
//此处报错,因为它试图覆盖父类中的静态方法。
public void methodA()
{...}
}
如果将父类A 中的methodA()改为private的,如下:
父类:
public class A{
private final void methodA()
{...}
}
子类:
public class B extends A{
//此处不报错,因为它只是重新定义类一个private类型的
methodA()
public void methodA()
{...}
}
注意类A中的methodA(),它的访问修饰符为private,此时,在子类B中是访问不到父类A的methodA()方法的。此时,在类B中的methodA()只是新定义的一个方法而不是覆盖父类的方法。所以,此时编译这个程序将不会报错。