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版本是不允许这样的,你只能在接口中声明方法)。

               

  • 相关阅读:
    Two Sum II
    Subarray Sum
    Intersection of Two Arrays
    Reorder List
    Convert Sorted List to Binary Search Tree
    Remove Duplicates from Sorted List II
    Partition List
    Linked List Cycle II
    Sort List
    struts2结果跳转和参数获取
  • 原文地址:https://www.cnblogs.com/coffeerun/p/5728492.html
Copyright © 2011-2022 走看看