本文共 1632 字,大约阅读时间需要 5 分钟。
最近小咸儿在学习有关Java基础的知识,才发现多次学习下来,每次都能有不同的体会和理解问题的角度。今天特将有关学习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()); }}
转载地址:http://gcerb.baihongyu.com/