Java

访问控制权限

2017-04-10  本文已影响2人  嘉美伯爵

四种访问控制权限

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();
    }
}
上一篇下一篇

猜你喜欢

热点阅读