参考链接: Java中类或接口的访问说明符

转自:https://www.cnblogs.com/tjudzj/p/4443066.html

对Java中的修饰符一直记不住,现在结合网上的一些资料进行总结,并重点说明一下protected修饰符。

一. Java中的访问修饰符

Java面向对象的基本思想之一是封装细节并且公开接口。Java语言采用访问控制修饰符来控制类及类的方法和变量的访问权限,从而向使用者暴露接口,但隐藏实现细节。访问控制分为四种级别:

(1)public: 用public修饰的类、类属变量及方法,包内及包外的任何类(包括子类和普通类)均可以访问;

(2)protected: 用protected修饰的类、类属变量及方法,包内的任何类及包外那些继承了该类的子类才能访问(此处稍后解释),protected重点突出继承;

(3)default: 如果一个类、类属变量及方法没有用任何修饰符(即没有用public、protected及private中任何一种修饰),则其访问权限为default(默认访问权限)。默认访问权限的类、类属变量及方法,包内的任何类(包括继承了此类的子类)都可以访问它,而对于包外的任何类都不能访问它(包括包外继承了此类的子类)。default重点突出包;

(4)private: 用private修饰的类、类属变量及方法,只有本类可以访问,而包内包外的任何类均不能访问它。  重要总结:通过上面的分析,我们可以看到: (1)public、private和protected对我们来说没有任何异议。

(2)顶层类只能用public访问修饰符和default(默认)访问修饰符修饰,其中用默认修饰符修饰的类(及没有任何修饰符的类,如class B{})不能被其他包中的类继承,这也说明了default(默认)访问修饰符突出的是包权限

(3) protected:本人做了一次实验,发现在不同包的子类中,new一个父类对象,并用该父类对象去访问父类中的用protected修饰的类属变量和方法时不能访问,而new一个子类对象时,子类对象可以访问(说明protected修饰的类可以被其他包中的类继承)。也可以在子类重写父类的方法中使用super关键字调用。这岂不是和上面表格中的总结(红色对勾)冲突了?本人也是百思不得其解。最后在网上找到了一个相对比较认可的解释,如下:

protected修饰符的修饰的成员变量和方法也称为受保护的成员变量和方法, 受保护的成员变量和方法可以在本类或同一个包中的其它类(包括子类)中通过类的实例进行访问,也可以被同一个包中的类或不同包中的类继承,但是不能在不同包中的其它类(包括子类)中通过类的实例进行访问。

(4) 如果一个类使用public修饰,那该类的类名必须与他所在的源文件名相同。一个.java源文件中有且只有一个public类,顶层类只能用public和默认修饰符(即无修饰符)修饰;

(5)final修饰的类不能被继承,没有子类。

(6) abstract修饰的类不能被实例化,必须被子类继承。类只要有一个抽象方法就必定是抽象类,但抽象类不一定要有抽象方法。

(7) 最终总结,就一句话:protected修饰符所修饰的类(这句话中指父类)属成员变量和方法,只可以被子类访问,而不管子类是不是和父类位于同一个包中。default修饰符所修饰的类属成员变量和方法,只可被同一个包中的其他类访问,而不管其他类是不是该类的子类。protected属于子类限制修饰符,而default属于包限制修饰符。

[转载] 基本概念:java中的访问修饰符相关推荐

  1. java中的访问修饰符

    对Java中的修饰符一直记不住,现在结合网上的一些资料进行总结,并重点说明一下protected修饰符. 一. Java中的访问修饰符 Java面向对象的基本思想之一是封装细节并且公开接口.Java语 ...

  2. java中 访问修饰符限制性最高的是,问:JAVA中,访问修饰符限制性最高的是( )。(选择一项)...

    问:JAVA中,访问修饰符限制性最高的是( ).(选择一项) A:friendly,B:protected ,C:private ,D:public 正确答案:绛旓細铻烘棆姊ā寮? 绛旓細鑷富鎬? ...

  3. JAVA访问修饰符限制性最高的_问:JAVA中,访问修饰符限制性最高的是protected ( )...

    问:JAVA中,访问修饰符限制性最高的是protected ( ) A:对,B:错 正确答案: 解析: 问:JAVA中,访问修饰符限制性最高的是protected ( )A:对,B:错 相关问题: 密 ...

  4. Java中的反射和Java中的访问修饰符

    什么是反射? ①在运行状态中,对于任何一个类,我们都能够知道这个类有哪些方法和属性 ②对于任何一个对象,我们都能够对它的方法和属性进行调用 总而言之:它反射Java语言中的一种机制,通过这种机制可以动 ...

  5. java 中的访问修饰符

    一. public:所有类都可以访问 protected:所有子类和同包下的类都可以访问 缺省:同包类都可以访问 private:类本身才可以访问 注意点:protected修饰类属性时,例如 pac ...

  6. Java中的访问修饰符详解

    Java一共提供了3个访问修饰控制符:private.protected.public,代表了三种访问控制级别,另外还有一个不加任何访问控制符的访问控制级别,一共提供了4中访问控制级别. 访问控制级别 ...

  7. java中的访问修饰符 (2013-10-11-163 写的日志迁移

    访问级别                 修饰符                    同类                    同包              子类                 ...

  8. Java final修饰符的作用,Java中的final修饰符

    1.什么时候可以选择final修饰符 如果想让一个类不被其他类继承,不允许在有子类,这时候就要考虑用到final来修饰. 2.用final修饰的类 首先大家要明白,用final修饰的类是不能被继承的, ...

  9. Java语言中的-----访问修饰符

    day04 Java语言中的----访问修饰符 一.访问修饰符概述: 访问修饰符就是对变量或者是方法或者是类的一个修饰,通过修饰以后实现一些必要的权限,主要是说明类成员如何被使用的作用. 二.访问修饰 ...

最新文章

  1. 【camera】2.相机成像原理和数学模型
  2. android开发之动画的详解 整理资料 Android开发程序小冰整理
  3. 阿里一面,给了几条SQL,问需要执行几次树搜索操作?
  4. 下列不是c语言浮点常量的是,C语言二级题库.doc
  5. Python 编码风格指南
  6. 部署testlink报错,安装wampserver时提示丢失MSVCR110.dll
  7. 这条路有多长,有多难 | 专访OnVideo创始人余世兵刘歧
  8. mysql表的视图怎么建立_MySQL如何创建视图
  9. Cinder - 读取glusterfs_shares_config代码
  10. 将平板、手机等作为电脑的副屏幕
  11. 矿 第一次数据结构实验
  12. PS小菜-1(快速旋转图片)
  13. Java数组讲解(数组,字符串数组,多态数组)
  14. Python基础 PyCharm如何新建项目
  15. laraveladmin省市区三级联动
  16. 24505 Problem A 例题1-1-1 按要求输出信息(1)
  17. 秒懂设计模式之工厂方法模式(Factory Method Pattern)
  18. JESD204接口调试总结——JESD204C协议的介绍
  19. STM32F4——DAC
  20. dialog对话框初始化 mfc_「弹出对话框」MFC系列 - 弹出一个模态对话框 - seo实验室...

热门文章

  1. php 点击选择图片上传,微信小程序图片选择、上传到服务器、预览(PHP)实现实例...
  2. fcn网络训练代码_FCN网络训练 菜鸟版
  3. 第七章节 类的抽象(接口)
  4. 程序如何在两个gpu卡上并行运行_【他山之石】如何支撑上亿类别的人脸训练?显存均衡的模型并行(PyTorch实现)...
  5. Python入门--字典的创建
  6. java消除整型数组中重复的元素,排序后输出新数组
  7. 牛客网 字符串的排列
  8. UnityShader26:运动模糊
  9. UnityShader11:纹理属性
  10. C++ STL 程序员必须会之学会删除容器中的元素 带详细注释实例版本