本类中 子类 同包类 其他类
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

19_01访问权限修饰符相关推荐

  1. python属性访问权限_python 面向对象-访问权限修饰符

    1.访问权限修饰符可以用来修饰变量和方法 2.内部调用和外部调用: 比如在类的内部调用实例方法,叫内部调用:在类的外部调用实例化方法,叫外部调用 当然,类变量以及实例变脸也是有内部调用和外部调用 #c ...

  2. Java的访问控制修饰符_访问权限修饰符_访问权限修饰词

    public > protected > (default) > private 1.public 修饰的,在任何地方都可以访问 2.protected 修饰的,在类内部.同一个包. ...

  3. Java——类成员的访问权限修饰符(private、protected、public、default)

    本文转载自:https://blog.csdn.net/qq_41420688/article/details/83348546 1. 作用 封装将数据和操作连接起来.封装的一个重要属性:访问控制. ...

  4. 基本数据类型在传参中的自顶向下和自底向上;this;访问权限修饰符

    数据类型传参变化 在重载方法中,如果传入的参数的数据类型的字节大小小于方法中声明的形式参数类型的字节大小,那么实际数据类型就会提升,char型略有不同,如果无法找到接受char参数的方法,就会直接升到 ...

  5. 学习大数据的第13天——Java面向对象(接口、分析参数返回值的类型不同时如何解决、包以及访问权限修饰符(public、protected、默认、private))

    学习大数据的第13天--Java面向对象(接口.分析参数返回值的类型不同时如何解决.包以及访问权限修饰符(public.protected.默认.private)) 接口 接口的基本定义: 1.1.语 ...

  6. 学习Java的第五天 | 定义方法 | 引用数据类型——类 | 访问权限-修饰符 | 全局变量与局部变量 | toString | 构造方法 | 方法重载

    前面提到的,冒泡排序,二分查找,我们有时候写代码可能不止要查到一种数组的数据,这时候我们就很需要想循环那样的结构,来帮我们解决代码冗余的情况. 我们前面使用的main方法,是一个java程序的入口,我 ...

  7. Java访问权限修饰符的区别

    Java有四种访问权限,其中三种有访问权限修饰符,分别为private,public和protected,还有一种不带任何修饰符: private: Java语言中对访问权限限制的最窄的修饰符,一般称 ...

  8. 2020.1.30 封装和隐藏(四种访问权限修饰符)、this、JavaBean、继承、方法的重写

    面对对象特征之一:封装和隐藏 Java中通过数据声明为私有的(private),再提供公共的(public)方法:getXxx()和setXxx()实现对属性的操作. 四种访问权限修饰符 在同一个ja ...

  9. java子承父业(继承,访问权限修饰符,super,重写,final)

    1.继承 :  子承父业 目的 : 提高代码的复用性         作用: 子类一旦继承父类,有权使用父类中的成员,可以在子类中定义子类独有的内容         定义:   子类  extends ...

最新文章

  1. pandas describe函数_PANDAS: 新手教程 一
  2. 信息系统项目管理师论文:论项目的风险管理
  3. 'ascii' codec can't encode characters in position 20-24:ordinal not in range(128)报错根本解决办法
  4. matlab多种分配方案_基于MATLAB的水资源优化分配问题动态规划解法
  5. matlab浪漫画图,Matlab技巧11:谁说数学人不懂浪漫——Matlab画隐函数曲面
  6. 部分拆解笔记本电脑(联想y580)
  7. office 兼容包下载地址
  8. C++封装继承多态理解
  9. Matlab实现身份证号码快速识别
  10. 实例详解——编译器命令#pragma section作用于函数时作用域是否覆盖到其子函数...
  11. Linux学习第一节课学习心得
  12. python调用多个cpp文件_python 如何调用cpp
  13. matlab心电信号的qrs波检测,基于matlab的操作员心电信号QRS波检测及分析
  14. mysql根据中文拼音分组_【改进篇】使用MySql实现好友昵称按拼音排序或分组
  15. 【智慧农业】LORA农业灌溉解决方案
  16. 关于深度可分离卷积 Depthwise Pointwise Convolution
  17. DL/T645-1997通信规约解读
  18. 数据分析《令人心动的offer2》—你心动了吗?
  19. linux查找错误,查找LinuxIP错误
  20. 傅里叶缩写及涵义整理

热门文章

  1. python操作mysql,增,删,改,查
  2. filter和map的区别
  3. Sql server 备份还原后出现“受限制用户”问题
  4. MFC和Direct3D9一起使用
  5. 计算机程序的构造和解释1构造过程抽象1.2过程与它们所产生的计算
  6. Spring实战之Cache
  7. asp.net mvc 2被遗忘的%:Html.AntiForgeryToken() %
  8. delay 芯片时序output_set_input_delay/set_output_delay
  9. 英国FCA将比特币ATM加入未注册加密业务名单
  10. 灰度资产管理总规模升至460亿美元