你不可不知的final(1)-引入及特点

导言:final,"最终"、“不可变性”,xxx是工程师精心设计的艺术品!艺术品易碎!用final就是拒绝修改,防止世界被熊孩子破坏,维护世界和平!

谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字。另外String类就是一个final类,那么今天我们就来了解final这个关键字的用法。

首先是final的引入,为什么要有final?

请看一段最常见的继承代码:

public class FinalTest {

	/**
	 * 权兴权意-2016.10.11
	 * final关键字(最终-类方法变量)
	 */
	public static void main(String[] args) {
		Son s = new Son();
		s.show();
	}

}

class Father{
	public void show(){
		System.out.println("父类珍贵资源。");
	}
}

class Son extends Father{
	@Override
	public void show() {
		System.out.println("子类垃圾资源。");
	}
}


最终输出结果:子类垃圾资源。

好端端的父类珍贵资源一眨眼就变成了子类垃圾资源。

我们要世界和平~

于是final出现了。

修改父类的show方法:

public final void show()

提示:Cannot override the final method from Father

一段继承代码,一个常见现象就是方法重写,子类方法覆盖父类方法。
但如果我们不想让子类覆盖,只想让他使用,那么我们就用final。


接下来,我们系统学习一下final的特点:

final关键字(最终-修饰类、方法、变量)
类,不能被继承。方法,不能被重写。变量,是常量。

ps-补充:
常量:
字面值常量:"Hello"、10、true
自定义常量:final int x = 10

下面我们通过代码测试一下:

类,不能被继承。

final class Father···

提示:The type Son cannot subclass the final class Father


方法,不能被重写。

引入时已经测过了。


变量,是常量。

在Father类中添加如下代码:

public int num1 = 10;
private int num2 = 20;

在Son类的show方法中添加如下代码:

num1 = 20;
num2 = 30;//提示:The field Father.num2 is not visible

最后附上完整源代码:

public class FinalTest {

	/**
	 * 权兴权意-2016.10.11
	 * final关键字(最终-类方法变量)
	 * 类,不能被继承。方法,不能被重写。变量,是一个常量。
	 * 常量:
	 * 	字面值常量:"Hello"、10、true
	 * 	自定义常量:final int x = 10
	 */
	public static void main(String[] args) {
		Son s = new Son();
		s.show();
	}

}

/*
 * 一段继承代码,一个现象,方法重写,子类方法覆盖父类方法。
 * 但如果我们不想让子类覆盖,只想让他使用,那么我们就用final.
 */
class Father{
	public int num1 = 10;
	private int num2 = 20;
	
	//final class Father{
	public void show(){
		//public final void show(){
		System.out.println("父类珍贵资源。");
	}
}

class Son extends Father{
	//The type Son cannot subclass the final class Father
	@Override
	public void show() {
		//Cannot override the final method from Father
		//super.show();
		num1 = 20;
		//num2 = 30;
		//The field Father.num2 is not visible
		System.out.println("子类垃圾资源。");
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值