Logo

郎哥编程

final方法

2019-12-24 227

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()方法。代码截图如下:

 image.png       

Rectangle类代码截图

从Rectangle类代码截图可以看出,重写父类的draw方法时,编译器报错,错误语句是第23行,主要错误信息是要求移除Figure类draw()方法的final关键字,错误信息如下图所示。

image.png 

在Rectangle类中可以尝试去掉“@Override”注解,即使去掉“@Override”注解,编译器仍然给出上面的错误信息。

由此可见,当父类的方法用final关键字修饰后,子类不能重写或覆盖父类的方法。

代码在线纠错(通义千问 qwen-max)

支持粘贴多个代码文件,提交后由阿里云通义千问自动分析代码漏洞、语法错误、逻辑问题并给出修改建议。
您已解锁 AI 代码纠错功能,可正常使用!

评论区

登录 后发表评论
暂无评论