final关键字也可以修饰类的方法,用final关键字修饰的方法,在子类中不能被重写或覆盖,但可以被重载。
案例1:新建Figure类(图形类),在Figure类提供一个draw()方法,用于绘制图形,draw()方法用final关键字修饰。然后再建立一个Figure类的子类Rectangle类,检测该类是否能够重写draw()方法。
在PCoreUnit3项目新建figure包,在figure包下新建Figure类。代码如下:
package figure;
/**
* @ClassName: Figure
* @Description: 包与类的高级特性(final方法)案例1
* @author 编程训练营
* @date
*
*/
public class Figure {
// 定义draw()方法
public final void draw()
{
System.out.println("绘制图形");
}
}在figure包下新建Figure类的子类Rectangle类,并重写父类的draw()方法。代码截图如下:
Rectangle类代码截图
从Rectangle类代码截图可以看出,重写父类的draw方法时,编译器报错,错误语句是第23行,主要错误信息是要求移除Figure类draw()方法的final关键字,错误信息如下图所示。
在Rectangle类中可以尝试去掉“@Override”注解,即使去掉“@Override”注解,编译器仍然给出上面的错误信息。
由此可见,当父类的方法用final关键字修饰后,子类不能重写或覆盖父类的方法。