访问控制权限

四种访问控制权限

public、protected、default、private。

| NO | 范围 | public |protected|default|private|
| :--------: | :----: | :----: | :--------: | :----: | :----: |:----: |
| 1| 在同一个类中 | √ |√|√| √ |
| 2 | 在同一个包的不同类 | √ | √ |√| |
| 3 | 在不同包的子类 | √ |√|||
| 4 | 在不同包的非子类 | √ |||||

protected权限

package cn.fovegage.demoa;
public class A{
    protected String info = "Hello";
}
--------------------------------------------------------
package cn.fovegage.demob;
import cn.fovegage.demoa.A;
public class B extends A{
    public void print(){
        System.out.println(super.info);
    }
}
-------------------------------------------------------
package test;
import cn.fovegage.demob.B;
public class Test{
    public static void main(String []args){
        new B().print();
    }
}
----------------------------------------------------------
F:\test>javac -d . A.java
F:\test>javac -d . B.java
F:\test>java test.Test
Hello

错误的访问

package test;
import cn.fovegage.demoa.A;
public class Test{
    public static void main(String []args){
        A a = new A();
        System.out.println(a.info);
    }
}
-------------------------------------------
F:\test>javac -d . Test.java
Test.java:6: 错误: info可以在A中访问protected
                System.out.println(a.info);
                                    ^
1 个错误

构造方法私有化

单列设计(Singleton)

class Singleton{
    public void print(){
        System.out.println("Hello World!!!");
    }
}
public class CC {
    public static void main(String []args){
        Singleton s = null;
        s = new Singleton();
        s.print();
    }
}

加入构造方法(错误的代码)

class Singleton{
    private Singleton(){}
    public void print(){
        System.out.println("Hello World!!!");
    }
}
public class CC {
    public static void main(String []args){
        Singleton s = null;
        s = new Singleton();   //此处代码错误
        s.print();
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容