Java-final修饰符

  最近小咸儿在学习有关Java基础的知识,才发现多次学习下来,每次都能有不同的体会和理解问题的角度。今天特将有关学习final修饰符的内容总结下来。

final修饰符

是什么

在这里插入图片描述

   final关键字可用于修饰类、变量和方法

  • final修饰类:不能被继承
  • final修饰变量:初始化赋值后,则不可以改变
  • final修饰方法:不能被重写

  final类

  当使用final修饰类时,则表明该类没有子类,即不能被继承

  不可变类

  不可变类就是说创建该类的实例后,该实例的实例变量就是不可变的

public class Address {
	private final String detail;
	private final String postCode;
	// 构造器中初始化这两个实例变量
	public Address()
	{
		this.detail = "";
		this.postCode = "";
	}
	public Address(String detail, String postCode)
	{
		this.detail = detail;
		this.postCode = postCode;
	}
	// 仅为两个实例变量提供getter方法
	public String getDetail()
	{
		return this.detail;
	}
	public String getPostCode()
	{
		return this.postCode;
	}
}

  在下面这种情况下,当创建不可变类时,如果它包含成员变量的类型是可变的,那么其对象的成员变量的值依然是可变的。

示例:

class Name
{
	private String firstName;
	private String lastName;
	public Name() {}
	public Name(String firstName, String lastName)
	{
		this.firstName = firstName;
		this.lastName = lastName;
	}
	// setter方法
	public void setFirstName(String firstName)
	{
		this.firstName = firstName;
	}
	public void setLastName(String LastName)
	{
		this.lastName= lastName;
	}
	// getter方法
	public String getFirstName()
	{
		return this.firstName;
	}
	public String getLastName()
	{
		return this.lastName;
	}
}
public class Person
{
	private final Name name;
	public Person(Name name)
	{
		this.name = name;
	}
	public Name getName()
	{
		return name;
	}
	public static void main(String[] args)
	{
		Name n = new Name("悟空", "孙");
		Person p = new Person(n);
		// Person对象的name的firstName值为“悟空”
		System.out.println(p.getName().getFirstName());
		// 改变Person对象的name值的firstName值
		n.setFirstName("八戒");
		// Person对象的name的firstName值被改为“八戒”
		System.out.println(p.getName().getFirstName());
	}
}
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值