EffectiveJava学习笔记9:类、成员的访问性+使可变性最小化

1.类、成员的访问性

1.1使类与成员的可访问性最小化

就是尽量使类和成员不被外界访问。

以下有四种访问级别:

1.private(私有):只有该成员的顶层类内部才可以访问这个成员

2.package-private(包级私有):该成员的包的内部的类都可以访问,为“缺省”的访问级别(就是不写访问级别时的默认的)

3.protected(受保护):该成员的类的子类都可以访问,内部类也都可以访问。

4.public(共有):任何地方都可以访问改成员

1.2要在共有类而非共有域中使用访问方法

也就是封装。(将类的属性访问级别设置private,使用getset方法访问,也就是把类的属性封装进了类中,调用时是直接调用类的方法,而不是直接调用属性)

public class test3{
    private int year;
    private String name;
    public test3() {
    }

    public test3(int year, String name) {
        this.year = year;
        this.name = name;
    }

    public int getYear() {
        return year;
    }

    public void setYear(int year) {
        this.year = year;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

所以共有类的实例域决不能是共有的,因为共有的话,那么放弃了不可变的能力,线程是不安全的。

 

2.使可变性最小化

不可变类指其实例不能被修改的类。(不可变类更加容易使用实现、更加安全)

使类成为不可变,遵循的五条规则:

1.不要提供任何会修改对象状态的方法(也就是设值方法:set)

2.保证类不会被扩展:防止子类化修改,防止手段一般是声明类为final。

3.声明所有的域都是final:防止域被修改。

4.声明所有的域都是私有的:控制访问级别

5.确保对于任何可变组件的互斥访问:就是类里面有可变对象的域时,需确保无法指向这些对象的引用,且不能用这些对象的引用来初始化域。

不可变对象本质上是线程安全的,它们不要求同步。所以不可变对象可以被共享。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值