• JAVA中的访问权限


    1、java中数据成员或者方法的访问权限:

    此时Java有public、protect、friendly、private四种访问权限,并且这四访问权限的访问范围越来越小。

    如果一个class内的数据成员或方法没有任何权限饰词,那么它的缺省访问权限就是friendly。同一个包内的其它所有类都可以访问friendly成员,但对包以外的类则形同private。

    public:可以被任何class调用;

    private:private成员只能在成员所属的class内被调用;

    class Sundae{
    private Sundae(){}//只能在Sundae class中被调用
    Sundae(int i) {}
    static Sundae makASundae() {
    return new Sundae();
    }
    }
    public class IceCream{
    public static void main(String[] args){
    // Sundae class中构造函数Sundae()是private,
    // 所以不能用它进行初始化
    //Sundae x = new Sundae();
    Sundae y = new Sundae(1);//Sundae(int)是friendly,可以在此调用
    Sundae z = Sundae.makASundae();
    }
    }

    4. protected:具有friendly访问权限的同时,又能被subclass(当然包括子孙类,即子类的子类)所访问。即,既能被同一package中的classes访问,又能被protected成员所在class的subclass访问。

    2、java中类的访问权限

    java中类也有public、protect、friendly、private四种访问权限

    1)public:在任何地方都可被使用

    2)private:除了它自己,没有任何class可以使用,所以class不能是protected或private(inner class除外)。

    3) friendly:同一个package中的classes能用

    4)protected: 同一个包中的类以及其子类都可见

    3、 如何调用构造函数被声明为private的class

    1) 用static函数

    2) 用Singteton模式

    class Soup{
    private Soup(){}
    //(1)静态函数方法
    public static Soup makeSout(){
    return new Soup();
    }
    //(2)The "Singleton" pattern:

    private static Soup ps1 = new Soup();
    public static Soup access(){
    return ps1;
    }
    public void f(String msg){
    System.out.println("f(" + msg + ")");
    }
    }
    public class Lunch{
    public static void main(String[] args){
    //Soup priv1 = new Soup();编译错误
    Soup priv2 = Soup.makeSout();
    Soup priv3 = Soup.access();
    priv2.f("priv2");
    priv3.f("priv3");
    }

    4、访问权限修饰符与继承 
    有两种情况:第一种: 子类与父类在同一包中  此时只有声明为private的变量与方法不能被继承(访问)。
    第二种情况:子类与父类不在同一包中  此时private与friendly均不能被继承(访问), protected与public可以。
  • 相关阅读:
    根据汉字获取其的首个字母
    jqure获取单选按钮的值(比如性别)
    dataset 和DataTable的用法
    利用ExcelDataReader封装类 导入表格数据
    批量导入数据.net
    一个按下键盘触发事件的例子
    Build Error 6041: Internal build error
    Word 2010巧妙绘制各种分割线的方法(图文)
    vbscript multiple line syntax
    Update msi using vbscript
  • 原文地址:https://www.cnblogs.com/LJTbozai/p/3201930.html
Copyright © 2020-2023  润新知