欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

浅谈Java之终止继承:Final类和Fianl方法

程序员文章站 2023-12-21 09:08:34
前言 关键字final不仅可以用来修饰变量,而且对类及其方法的继承也有很大的影响,本文将从类与方法两个方面介绍final关键字的功能。 final类 当关键字fina...

前言

关键字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)
	{
		
	}
}

报错:

浅谈Java之终止继承:Final类和Fianl方法

可以看出,编译找不到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();
	}
 
}

运行结果:

浅谈Java之终止继承:Final类和Fianl方法

可以看出,代码正常编译运行,final的方法show被成功继承。但是若图将final的方法在子类中重写,将会编译报错:

class son extends father 
{
 public void show()
 {
  system.out.println("重写final方法");
 }
}

浅谈Java之终止继承:Final类和Fianl方法

可以看出final的方法不能被继承。

要恰当使用final方法,只有在子类覆盖某个方法会带来问题时,再将此方法设置为final方法,一般情况下不必使用。因为防止子类覆盖会丢失一些面向对象的优点,包括通过覆盖实现的可扩展性。

以上所述是小编给大家介绍的java之终止继承:final类和fianl方法详解整合,希望对大家有所帮助

上一篇:

下一篇: