• 访问控制public/protected/private的区别


    Java支持四种不同的访问权限:

    修饰符说明
    public 共有的,对所有类可见。
    protected 受保护的,对同一包内的类和所有子类可见。
    private 私有的,在同一类内可见。
    默认的 在同一包内可见。默认不使用任何修饰符。

    public:公有的

    被声明为public的类、方法、构造方法和接口能够被任何其他类访问。

    如果几个相互访问的public类分布在不用的包中,则需要导入相应public类所在的包。由于类的继承性,类所有的公有方法和变量都能被其子类继承。

    protected:受保护的

    被声明为protected的变量、方法和构造方法能被同一个包中的任何其他类访问,也能够被不同包中的子类访问。

    protected访问修饰符不能修饰类和接口,方法和成员变量能够声明为protected,但是接口的成员变量和成员方法不能声明为protected。

    子类能访问protected修饰符声明的方法和变量,这样就能保护不相关的类使用这些方法和变量。

    private:私有的

    私有访问修饰符是最严格的访问级别,所以被声明为private的方法、变量和构造方法只能被所属类访问,并且类和接口不能声明为private。

    默认的:不使用任何关键字

    不使用任何修饰符声明的属性和方法,对同一个包内的类是可见的。接口里的变量都隐式声明为public static final,而接口里的方法默认情况下访问权限为public。

    例子

     1 public class Dog{
     2     protected void bark() {
     3         System.out.println("汪汪!");
     4     }
     5 }
     6 class Teddy extends Dog{  
     7     void bark() {
     8         System.out.println("哈哈");
     9     }
    10 }

    如果把bark()方法声明为private,那么除了Dog之外的类将不能访问该方法。如果把bark()声明为public,那么所有的类都能够访问该方法。如果我们只想让该方法对其所在类的子类可见,则将该方法声明为protected。 

     

    访问控制和继承

    注意以下方法继承的规则:

    • 父类中声明为public的方法在子类中也必须为public

    • 父类中声明为protected的方法在子类中要么声明为protected,要么声明为public。不能声明为private

    • 父类中默认修饰符声明的方法,能够在子类中声明为private

    • 父类中声明为private的方法,不能够被继承。

    • 父类的构造方法不能被继承。
  • 相关阅读:
    iOS 上线流程
    静态库和动态库的区别
    iOS如何生成.a文件
    苹果公司软件
    iOS 的主要框架
    多线程图解
    判断屏幕横屏/竖屏
    最大堆构建和堆排序
    hadoop2.6.0 + hbase-1.0.0 伪分布配置
    centos6 名字服务dnsmasq配置
  • 原文地址:https://www.cnblogs.com/hezhangyear/p/4758789.html
Copyright © 2020-2023  润新知