博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
19_01访问权限修饰符
阅读量:4701 次
发布时间:2019-06-09

本文共 1932 字,大约阅读时间需要 6 分钟。

  本类中 子类 同包类 其他类
public 可以 可以 可以 可以
protected 可以 可以 可以 不可以
默认(不写) 可以 (同包子类) 可以 不可以
private 可以 不可以 不可以 不可以

在Java编程语言中有四种权限访问控制符,这四种访问权限的控制符能够控制类中成员的可见性。

一、public
(1)定义:public是公共的,被public所修饰的成员可以在任何类中都能被访问到。
(2)修饰的成分:
public能用来修饰类,在一个java源文件中只能有一个类被声明为public,而且一旦有一个类为public,那这个java源文件的文件名就必须要和这个被public所修饰的类的类名相同,否则编译不能通过。说到这里,穿插多一点知识。一个类作为外部类的时候只能被public或者默认访问修饰符所修饰,但是一个类如果作为内部类的时候,则可以被四种访问修饰符所修饰,因为一个类作为内部类的时候,就作为外部类的一个成员属性了,因此可以有四种访问修饰符修饰,这是内部类和外部类的一个区别。
public用来修饰类中成员(变量和方法),被public所修饰的成员可以在任何类中都能被访问到。通过操作该类的对象能随意访问public成员。
public在类的继承上的体现,被public所修饰的成员能被所有的子类继承下来。
二、protected
(1)定义:protected是受保护的,受到该类所在的包所保护。
(2)作用域:被protected所修饰的成员会被位于同一package中的所有类访问到。同时,被protected所修饰的成员也能被该类的所有子类继承下来。(注意:这里是指同一个package或者不同的package中的子类都能访问)这里有一个注意点是,不同包下的类中的protected修饰的信息,子类对象要在子类的本类中使用才能调用。

package cn.day09; //在cn.day09包下public class A3{         private String name="徐旺骑";    protected String GetName() {        return    this.name;    }}
package cn.java.Api;import cn.day09.*;public class ObjectDemo {    public static void main(String[] args) {        B b=new B();        //调不到父类A的protected方法是调不到的会报错        //b.GetClass();    }}class B extends A3{    void m() {        //本类中创建的对象可以调用protected方法,要是再其他类中创建B对象就不能调用到了        B b=new B();        b.GetName();    }}
class C extends A3{    void m() {              B b=new B(); //又调用不到了,不是再B类中创建的对象        b.GetName();    }}
 

 

三、friendly(默认,缺省的)
(1)定义:friendly是友好的,即在成员的前面不写任何的访问修饰符的时候,默认就是友好的。所谓友好的,是对同一package的类友好。
(2)作用域:同一package中的所有类都能访问。被friendly所修饰的成员只能被该类所在同一个package中的子类所继承下来。(也就是说只有在同一个package中的子类才能访问到父类中friendly修饰的成员)
四、private
(1)定义:private是私有的,即只能在当前类中被访问到,它的作用域最小。

 

为什么只有projected和private无法修饰类:个人理解的是 public 可以控制包与包类之间的访问, 默认的方法修饰符可以控制同一个包下的类的访问。分工可以说很明确了,而project 不同包下的类可以通过子类继承来访问,同包类也可以之间也可以访问到,这个时候就没有默认访问修饰符的访问更明确,我要是想包与包之间访问我为什么不用public呢?都不需要子类继承。

参考:

原文:https://blog.csdn.net/weixin_36024609/article/details/59652802

转载于:https://www.cnblogs.com/xuwangqi/p/11083826.html

你可能感兴趣的文章
cPanel设置自定义404错误页
查看>>
16.垃圾最小化
查看>>
ROS time stamp and sync
查看>>
将 Shiro 作为应用的权限基础 三:基于注解实现的授权认证过程
查看>>
遍历聚合对象中的元素——迭代器模式(四)
查看>>
Ehab and subtraction(思维题)
查看>>
Codeforces Round 56-C. Mishka and the Last Exam(思维+贪心)
查看>>
统计汉字
查看>>
使用JavaScript重定向URL参数
查看>>
Tomcat系列(5)——Tomcat配置详细部分
查看>>
python生成器
查看>>
Mybatis 面试题
查看>>
Oracle入门《Oracle介绍》第一章1-4 Oracle 用户管理
查看>>
MPEG文件中什么是GOP
查看>>
贪心算法
查看>>
循环链表
查看>>
Joda-Time 简介
查看>>
MVC中用Jquery、JS和Ajax 实现分页 存储过程是用mysql写的。
查看>>
APIO 2014 回文串(Manacher+后缀自动机+倍增)
查看>>
PHP面向对象(OOP)----分页类
查看>>