zoukankan      html  css  js  c++  java
  • Java中存取权限和修饰符public、private、protected和default的区别和联系

    java中有4种存取权限和对应的修饰符(从限制最少的开始列出),主要作用如下:

    1.public
    权限最大,代表任何程序代码都可以存取的公开事物(类、变量、方法、构造函数等)。它往往用于对外的情况,也就是对象或类对外的一种接口的形式。看一下例子:

    package com.ab.test;

    public class Public {
    public int a = 20;
    public void hello(){
    System.out.println("Hello World!");
    }

    }
    我们先在一个包中定义一个public的类、变量、方法,然后我们再定义一个在不同包中来引用这个类、变量、方法:
    package com.ab.main;

    import com.ab.test.*;

    public class Main {

    /**
    * @param args
    */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    int a;
    Public pub = new Public();
    a = pub.a;
    System.out.println("Main a is: " + a);
    pub.hello();
    }

    }

    我们可以通过import com.ab.test.*;的方式就可以很方便无限制的调用类Public了,这种方式也是我们平时使用的比较多的形式,我们可以把通用的类放到一个包中,比如像处理数据库,
    发送邮件或者存取excel等基础通用的需求,然后后续在很多地方反复调用,这也是代码重用,能够极大提高效率。
    2.protected

    受保护的部分运行起来像是default,但也能允许不在相同包中的子类继承受保护的部分,主要作用是保护子类的。

    3.default

    只有在同一包中的默认事物能够存取,也称为friendly,它是针对本包访问而设计的,声明时没有加修饰符,认为是friendly

    4.private

    只有同一类中的程序代码才能存取,访问权限限于类的内部,是一种封装的体现。需要注意的是它是对类而不是对象设限,所以Dog可以看到别的Dog的私有部分,但Cat就不能看到Dog的私有部分。
    借用一个网上搜到的图片,总结权限如下:

    需要注意的点:

    1.在java里,这些修饰符都可以修饰类中的成员变量和方法,但是只有public和友好型可以修饰类,也就是说只能有public和default的类,而不能有private和protected的类;

    2.java的访问控制是停留在编译层的,也就是它不会在.class文件中留下任何的痕迹,只在编译的时候进行访问控制的检查。其实,通过反射的手段,是可以访问任何包下任何类中的成员,例如,访问类的私有成员也是可能的。

  • 相关阅读:
    sqlilab-Less-41-53-writeup
    【转载】CPU架构、指令集与指令集体系结构(ISA)
    《鸟哥的Linux私房菜》读书笔记--第0章 计算机概论 硬件部分
    UVA-1602 Lattice Animals 搜索问题(打表+set)
    Python爬虫简单入门及小技巧
    HDU-1043 Eight八数码 搜索问题(bfs+hash 打表 IDA* 等)
    nginx重启命令
    php使用正则过滤js脚本代码实例
    ini_set("display_errors","On");和error_reporting(E_ALL);
    js中NAN、NULL、undefined的区别
  • 原文地址:https://www.cnblogs.com/practice-h/p/9077082.html
Copyright © 2011-2022 走看看