zoukankan      html  css  js  c++  java
  • 一.Java访问权限饰词(access specifiers) 程序员

    
    Java有public、protect、friendly、private四种访问权限,并且这四访问权限的访问范围越来越小。 
    
    1. friendly 
    
    1) 果一个class内的数据成员或方法没有任何权限饰词,那么它的缺省访问权限就是friendly。同一个package内的其它所有classes都可以访问friendly成员,但对package以外的classes则形同private。 
    
    2)对于同一个文件夹下的、没有用package的classes,Java会自动将这些classes初见为隶属于该目录的default package,可以相互调用class中的friendly成员。如以下两个class分别在同一个文件夹的两个文件中,虽然没有引入package, 但隶属于相同的default package。 
    
    class Sundae{ 
    //以下两个方法缺省为friendly 
    Sundae(){} 
    Void f() {System.out.println(“Sundae.f()”); 
    } 
    public class IceCream{ 
    public static void main(String[] args){ 
    Sundae x = new Sundae(); 
    x.f(); 
    } 
    } 
    2. public:可以被任何class调用 
    
    3. 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访问。 
    
    二.Class的访问权限 
    
    1.Class同样具有public、protect、friendly、private四种访问访问权限: 
    
    1)public:在任何地方都可被使用 
    
    2)protect、private:除了它自己,没有任何class可以使用,所以class不能是 
    
    protected或private(inner class除外) 
    
    3) friendly:同一个package中的classes能用 
    
    2. 如何调用构造函数被声明为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"); 
    }
  • 相关阅读:
    JSON的基本认识
    Linux基础 7-10 Bash编程练习4--for循环
    Linux基础7-9 Bash编程--for循环语句
    linux基础 7-3-条件判断语句案例
    Linux基础 7-8 sed命令使用练习
    Linux基础 7-7 set命令的使用
    Linux基础 7-6 Bash脚本编程练习3
    Linux基础7-5 Bash脚本编程--算术运算
    Linux基础7-4 Bash脚本编程练习2
    Linux基础 7-3 Bash脚本编程--条件判断
  • 原文地址:https://www.cnblogs.com/sallon/p/2551657.html
Copyright © 2011-2022 走看看