Java中的final关键字

1、修饰类

表示这个类不能被继承,没有子类

final class Eunuch{//太监类
	
}
class Son extends Eunuch{//错误
	
}

2、修饰方法

表示这个方法不能被子类重写,但是子类仍能访问

class Father{
	public final void method(){
		System.out.println("father");
	}
}
class Son extends Father{
	public void method(){//错误
		System.out.println("son");
	}
}

3、声明常量

final修饰某个变量(成员变量或局部变量),表示它的值就不能被修改,即常量,常量名建议使用大写字母。

如果某个成员变量用final修饰后,没有set方法,并且必须初始化(可以显式赋值、或在初始化块赋值、实例变量还可以在构造器中赋值)

public class Test{
    public static void main(String[] args){
    	final int MIN_SCORE = 0;
    	final int MAX_SCORE = 100;
    }
}
class Chinese{
	public static final String COUNTRY = "中华人民共和国";	
	private String name;
	public Chinese( String name) {
		super();
		this.name = name;
	}
	public Chinese() {
		super();
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	//final修饰的没有set方法
	public static String getCountry() {
		return COUNTRY;
	}
}

final关键字练习

/**
 * 1、final
 * final修饰的是o,不是i,因此o变量的值不能修改,不是说i变量的值不能修改
 * 2、方法的参数传递机制:
 * 形参是基本数据类型,那么实参给形参的是数据值的副本,形参的修改不影响实参;
 * 形参是引用数据类型,那么实参给形参的是地址值的副本,形参对象修改属性相当于实参对象修改属性
 */
public class Test10 {
    public static void main(String[] args) {
        Other o = new Other();
        new Test10().addOne(o);
        System.out.println(o.i);
    }

    public void addOne(final Other o){
        o.i++;//final修饰的是o,不是i,因此o变量的值不能修改,不是说i变量的值不能修改
    }
}
class Other{
    public int i;
}
/**
 * 运行结果:
 * 1
 */

练习总结:

1,final修饰的是o,不是i,因此o变量的值不能修改,不是说i变量的值不能修改

2、方法的参数传递机制:形参是基本数据类型,那么实参给形参的是数据值的副本,形参的修改不影响实参;形参是引用数据类型,那么实参给形参的是地址值的副本,形参对象修改属性相当于实参对象修改属性,显然addOne(final Other o)方法中形参o时引用数据类型,那么传给形参的是地址值的副本,当在addOne(final Other o)方法中对对象o的实例变量i进行修改,那么就是对o对象的实例变量进行了真正的修改,因此结果为1.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值