第六章 访问权限控制

这一章都是在说public、protected、friendly(即默认)、private的区别

1.首先,区分修饰词修饰类和成员的差别

  (1)类只能要么被public修饰,要么啥都没有即默认(包访问权限);(这一条不包括内部类)

  (2)类的成员可以被public、protected、private修饰还可以默认;

2.权限范围public > protected > friendly > private

解释为何protected > friendly: 因为protected = 包访问权限 + 子类访问 ;friendly = 包访问权限;

举例:A包中类A1继承自B包中类B1,类A1可以访问B1类中被protected修饰的成员但不可访问默认即friendly成员,但是B1类中protected与friendly修饰成员在包B内都可被访问

3.权限表:

网上看了很多人写的博客说默认修饰符即(friendly或default),其子类不可访问基类friendly成员,笔者亲自试了试,发现:子类可以得到基类friendly成员,不过子类要与基类在同一个包中。到不是说别人说的是错的,只是描述不准确。因为子类和基类的成员应该用“得到”描述,而不应该用访问描述。继承是子类得到基类成员而不是访问。因为“得到”有拥有的意思,而访问没有。方法之间才说访问。所以说计算机学习的难点,语言是非常大的障碍,计算机知识很抽象很难描述。

 

访问权限 本类 本包类 本包中子类 非本包中的子类 非子类外包类
public 可访问 可访问 可得到 可得到 可访问
protected 可访问 可访问 可得到 可得到 不可访问
friendly 可访问 可访问 可得到 不可得到 不可访问
private 可访问 不可访问 不可得到 不可得到 不可访问

 

 

4、通过方法访问与通过实例访问是两码事实例:

public class Visit{
    void print() {
        System.out.print("B");
    }
    public static void main(String[] args) {
        Visit v = new Visit();
        v.print();
    }

}

 这里直接在main()中使用print()方法报错静态方法不可以访问非静态成员。

 

这里创建一个对象就可以了。

 

posted @ 2019-08-18 23:27  卑微芒果  Views(179)  Comments(0Edit  收藏  举报