Java学习笔记Java学习笔记

读书笔记 | 《Think in Java》Ⅵ 访问权限控制

2018-04-12  本文已影响3人  寒食君
信仰牌咖啡

Ⅵ 访问权限控制

6.1包:库单元
6.2 Java访问权限修饰词
  1. 包访问权限:
  1. public权限:
//:access/food/Chicken.java
public class Chicken {
    public Chicken(){
        System.out.println("构造一只鸡");
    }
    //没有修饰符默认包访问权限
    void eat(){
        System.out.println("吃");
    }
    
    //公有权限
    public void get(){
        System.out.println("获得");
    }
}

//:access/Dinner.java
public class Dinner {
    public static void main(String[] args){
        Chicken c=new Chicken();
        c.eat();//这句无法访问,因为不在一个包中
        c.get();//可以访问
    }
}
  1. private权限:
public class Chicken {
    private  Chicken(){}
    static Chicken makeAChicken(){
        return new Chicken();
    }
}

//隐藏了构造器
Chicken c=Chicken.makeAChicken();
  1. protected权限:
//:access/food/Chicken.java
public class Chicken {
    public Chicken(){
        System.out.println("构造一只鸡");
    }
    //继承访问权限
    protected void eat(){
        System.out.println("吃");
    }
    

//:access/FriedChicken.java
public class FriedChicken extends Chicken {
  public FriedChicken(){}
  public void chomp(){
    eat();
  }
}

//:access/Dinner.java
public class Dinner {
    public static void main(String[] args){
        FriedChicken fc=new FriedChicken();
        fc.chomp();
    }
}

6.4 类的访问权限
6.5 总结

设计访问控制权限有两个原因。

需要注意的是,访问权限控制专注于类库的创建者和类库的使用者(客户端程序员)之间的关系,这种关系是一种通信方式。

但是,在一些情况下并非如此。假如你在一个组内和大家一起工作,所有的东西都放在一个包内,这种情况是另一种不同的通信方式,因此严格遵循访问权限规则不一定是最佳选择,默认包访问权限也许仅仅只是可行。(这点暂时还不是很理解)

扫一扫,关注公众号

小白的成长探索之路。

上一篇 下一篇

猜你喜欢

热点阅读