zoukankan      html  css  js  c++  java
  • Java中的访问限制符

    package:包访问权限

    如果不提供任何访问权限修饰词,则意味着它是包访问权限

    默认访问权限没有任何关键字,但通常是指包访问权限(有时也表示为friendly)。这意味着包中所有其他类都可以访问这个成员或方法,但是这个包之外的所有类不可以访问

    例:

    com.notes.packages.test.Info

    package com.notes.packages.test;

    public class Info {

        void print() { System.out.println("default method -- print()"); }

    }

    com.notes.packages.test.PublicDemo01

    package com.notes.packages.test;

    public class PublicDemo01 {

        public static void main(String[] args) {

            Info x = new Info();

            x.print();

        }

    }

    PublicDemo01和Info在同一个包下,可以访问Info的default级别的方法——print()。

    com.notes.packages.PublicDemo02

    package com.notes.packages;

    import com.notes.packages.test.Info;

    public class PublicDemo02 {

        public static void main(String[] args) {

            Info x = new Info();

            // x.print(); // Error

        }

    }

    PublicDemo02和Info不在一个包下,不可以访问Info的包访问权限级别的方法——print()。

    public:接口访问权限

    使用public关键字,就意味着被声明的成员或方法对所有人都是可以访问的

    例:如果将default级别权限例子中的print()方法权限设为public,则PublicDemo02可以访问。

    package com.notes.packages.test;

    public class Info {

        public void print() { System.out.println("public method -- print()"); }

    }

    private:无法访问

    使用private关键字,就意味着被声明的成员或方法,除了本类,其他任何类都无法访问

    应用场景:单例模式

    protected:继承访问权限

    新类(称之子类或派生类)通过继承可以复用一个现有类(称之父类或基类),然后扩展基类的成员、方法。有时,基类的创建者会希望某个特定成员,将它的访问权限赋予派生类而不是所有类。public无法做到这一点,为此,引入了protected来完成这一工作。protected也提供包访问权限,也就是说,派生类以及相同包内的其他类都可以访问protected成员或方法

    例:子类继承父类后,可以访问父类的protected成员。

    class Father {

        private String a = "private";

        protected String b = "protected";

        public String c = "public";

    };

    class Son extends Father {

        public void print() {

            // System.out.println("element a:" + super.a); // Error

            System.out.println("element b:" + super.b);

            System.out.println("element c:" + super.c);

        }

    }

    public class ProtectedDemo01 {

        public static void main(String args[]) {

            Son sub = new Son();

            sub.print();

        }

    };

    总结

    前面各个例子中展示了类的成员、方法都可以用各种权限修饰词来修饰。

    除此之外,还有一些需要注意的点:

    (1)     静态成员、静态方法的权限修饰词的用法和普通成员、方法一样。

    (2)     类虽然也可以被修饰词修饰,但是不可以用privateprotected两个权限修辞词。

    (3)     有些书中将包访问权限又叫做默认访问权限。个人不建议这么去记,因为这很容易与Java Se8中新特性——default关键字混淆。这个关键字只能用于Interface,作用是允许程序员在Interface中定义接口的默认具体实现(以往的JDK版本是不允许这样的,你只能在接口中声明方法)。

               

  • 相关阅读:
    课程5:Spring框架2016版视频--视频列表目录
    TAQSkinScrollBar 类美化滚动条再讨论
    C#区分多态和重载-delphi也类似
    Delphi之静态方法,虚方法virtual,动态dynamic,抽象abstract,消息
    课程4:黑马程序员_spring2.5视频教程--视频列表
    在 Delphi 中判断一个字符是中文的方法
    salesforce 零基础学习(四十八)自定义列表分页之Pagination基类封装 ※※※
    salesforce 零基础学习(四十七) 数据加密简单介绍
    salesforce 零基础学习(四十六)动态美观显示列表中记录的审批状态
    salesforce 零基础学习(四十五)Approval Lock & UnLock相关注意事项
  • 原文地址:https://www.cnblogs.com/coffeerun/p/5728492.html
Copyright © 2011-2022 走看看