浅谈Java之终止继承:Final类和Fianl方法
前言
关键字Final不仅可以用来修饰变量,而且对类及其方法的继承也有很大的影响,本文将从类与方法两个方面介绍final关键字的功能。
Final类
当关键字final用来修饰类时,其含义是该类不能再派生子类,换句话说,任何其他类都不能继承用final修饰的类,即使该类的访问权限为pubilc类型,也不能被继承;否则,将编译报错。
只有当需要确保类中的方法都不被重写时才应该建立最终(final)类,final关键字将会为这些方法提供安全,没有任何人能够重写final类中的方法,因为不能继承。
例:
package chapeter04;
final class Father { }
public class Sample3_13 extends Father
{
public static void main(String[] args)
{
}
}
报错:

可以看出,编译找不到Father类。
Final方法
当关键字final修饰方法后,该方法在子类中将无法重写,只能继承,例:
package chapeter04;
class Father
{
public final void show()
{
System.out.println("我是final方法,可以被继承,但是不能被重写");
}
}
class Son extends Father { }
public class Sample4_15
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
Son s= new Son();
s.show();
}
}
运行结果:

可以看出,代码正常编译运行,final的方法show被成功继承。但是若图将final的方法在子类中重写,将会编译报错:
class Son extends Father
{
public void show()
{
System.out.println("重写Final方法");
}
}

可以看出final的方法不能被继承。
要恰当使用final方法,只有在子类覆盖某个方法会带来问题时,再将此方法设置为final方法,一般情况下不必使用。因为防止子类覆盖会丢失一些面向对象的优点,包括通过覆盖实现的可扩展性。
栏 目:JAVA代码
下一篇:Spring @Primary和@Qualifier注解原理解析
本文标题:浅谈Java之终止继承:Final类和Fianl方法
本文地址:http://www.codeinn.net/misctech/177501.html


阅读排行
- 1Java Swing组件BoxLayout布局用法示例
- 2java中-jar 与nohup的对比
- 3Java邮件发送程序(可以同时发给多个地址、可以带附件)
- 4Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type异常
- 5Java中自定义异常详解及实例代码
- 6深入理解Java中的克隆
- 7java读取excel文件的两种方法
- 8解析SpringSecurity+JWT认证流程实现
- 9spring boot里增加表单验证hibernate-validator并在freemarker模板里显示错误信息(推荐)
- 10深入解析java虚拟机




