在编程过程中,经常会遇到四种修饰符来控制访问权限。之前对这个知识点没有研究过,一直是一知半解,每次遇到问题都模棱两可,不能给出一个确切的答案。近几天系统的看了看,也有了自己的一点心得体会。

正文:

先上总纲:

修饰符

本类

本包

继承类

其他类/其他包

private

default(friendly)

protected

public

注意:

在java中private和protected是不能修饰类的,只能修饰方法和变量,在thinking in java这本书里也有提到。而 public 和 默认 则没有限制。

private:私有修饰符

这个修饰符很简单,被它修饰的变量和方法(包括静态和成员),都只能在类的内部使用,并且不能被继承。在类的外部即便是通过类本身去调用静态变量/方法,在语法编译也是不能通过的。所以,如果想要使用被private修饰的东西,必须提供可以被其他类调用的方法来间接的操作。当然,你要让哪些类可以间接操作,依然可以用修饰符来控制权限。

default:默认修饰符(友好修饰符)

使用这个修饰符的变量和方法,只能在本包中使用。假定现在有A,B两个类,其中A类有使用默认修饰符的属性和方法,当A,B两个类处于同一个文件夹时,那么B类可以使用这些属性和方法,但当A,B不在同一个文件夹时,那么B就不能使用。

使用该修饰符修饰类的时候,说明该类只能被在同一包的其他类继承,创建和使用,其他包中的类是不能继承的,而且也不能使用该类。

当使用该修饰符修饰变量和方法,而类本身用public修饰时,这些变量和方法只能被同一包的其他类继承和使用。不同包的类即使继承了该类,但用default修饰的变量和方法也不能被继承和使用。

protected:受保护修饰符

这个修饰符给我的感觉就像是专门为了继承而存在的。因为它和默认修饰赋的作用域基本一致,只是增加了可以在子类中使用的权限。所以,A类中被protected修饰的变量和方法,可以被其子类继承和使用(在不在一个包都无所谓)。而对于没有继承A类的类,它的操作权限参考默认权限就可以了。

(但是protected不能修饰类,我没有搞清楚为什么,因为感觉是可以的。只能先留在这,等以后清楚了,再修改。)

public:公共修饰符

我大public就不说了,公共的嘛,谁都可以来掺一脚,哈哈。

java四种修饰符_java中的四种修饰符相关推荐

  1. java的四个访问修饰符_Java中的四种访问修饰符

    Java中修饰符分为两种:访问修饰符和非访问修饰符.修饰符中,有一些修饰符可以既可以修饰类,也可以修饰方法,但是有一些修饰符只能修饰符方法. 今天这篇文章先介绍一下四种访问修饰符. 1.private ...

  2. java原始类型和引用类型_Java中的8种原始类型

    java原始类型和引用类型 几年前,当我开始编辑Java Basics系列时,我认为将一些非常详细的信息拉到自己的帖子中是很有意义的. 这样,初学者的内容就更容易消化了. 首先,我将介绍有关Java的 ...

  3. java中访问修饰符_Java中的非访问修饰符是什么?

    java中访问修饰符 Java非访问修饰符 (Java non access modifiers) We have 7 non-access modifiers in Java. The name o ...

  4. java array 元素的位置_java中的两种排序工具Arrays和Collections的使用

    java中的排序工具主要是有两个Arrays和Collections.我们一个一个来讲解. 本来写好了每一种方法的测试代码,后来又给删了,因为我觉得如果想要去了解的话,可以直接查看这些常用的即可.因为 ...

  5. java中两种异常类型_Java中的三种异常类型

    java中两种异常类型 Errors are the bane of users and programmers alike. Developers obviously don't want thei ...

  6. java单例模式的实现方法_Java中的五种单例模式实现方法

    Ext4 ComboBox组件使用 先来看例子: Ext.define('schoolModel', { extend: 'Ext.data.Model', fields: [{ name: 'id' ...

  7. java中换行符_Java 中的空格符、换行符等怎么表示

    展开全部 特殊字符的自表示方法:: 1.\t 空格2113 ('\u0009') 2.\n 换行 ('\u000A') 3.\\ 反斜杠5261 4.\r 回车 ('\u000D') 5.\d 数字4 ...

  8. java中有哪些访问修饰符_java中四种访问修饰符

    Java中的四种访问修饰符:public.protected.default(无修饰符,默认).private. 四种修饰符可修饰的成分(类.方法.成员变量) public protected def ...

  9. java 权限修饰符_java中4种访问权限修饰符

    在Java编程语言中有四种权限访问控制符,这四种访问权限的控制符能够控制类中成员的可见性. 一.public (1) 定义:public是公共的,被public所修饰的成员可以在任何类中都能被访问到. ...

最新文章

  1. Github近期最有趣的10款机器学习开源项目
  2. c++疯狂代码之读和写。。。(用读操作来触发写)
  3. python开发工程师面试题-分析经典Python开发工程师面试题
  4. Mac用户SVN图形界面推荐
  5. 数据中心供电有多重要,看看这件事就知道了
  6. 嵌入式 linux 启动脚本 编写,[9构建嵌入式linux系统项目-启动脚本的编写.ppt
  7. Hibernate注解(一)之持久化实体
  8. redux 源码详解
  9. windows bat脚本编写_怎样在 txt 中用 2 行代码写出一个锁屏休息提醒脚本?
  10. dtft性质及证明_N第二章离散时间傅立叶变换(DTFT).ppt
  11. ln命令 Linux软连接(Symbolic Link)和硬链接(Hard Link)
  12. 自动化测试-uiautomatorviewer.bat
  13. ios 线条球_烧脑挑战画线给小球回家
  14. 高通820(msm8996)camera hal源码分析
  15. 12-18-2018学习2.410.6
  16. 弘辽科技:开网店前期需要做好什么工作?弘辽科技提供优质的资源
  17. TYPEC 接口芯片CC逻辑原理与必要性
  18. c语言星座图原理,通信原理中星座图详解
  19. MYSQL——MYSQL中常见的数据库引擎
  20. Mar. 6, 15:00-17:00, 1493, Strichartz analysis for Schrodinger and wave equation I by Chong Chen

热门文章

  1. physx选择显卡还是cpu_99块钱买啥显卡?PUBG吃鸡60fps+的缩水版“GTX1050”3GB游戏实测...
  2. 51单片机的轮胎气压监测系统_汽车的胎压监测系统有哪些作用?
  3. mac pycharm 卸载_Mac上Virtual Box虚拟机Linux系统安装
  4. CSS中定义多个链接样式,在CSS中定义【导航栏】超链接样式
  5. android在java下建立模块,Android Studio:如何在Android模块中包含Java模块?
  6. OpenShift 4 - Fedora CoreOS (4) - 用 Ignition 定制 CoreOS 的网络/存储等配置
  7. 使用face-api和Tensorflow.js在浏览器中进行AI年龄估计
  8. 用于数据输入的基本WPF窗口功能
  9. Vue 3 源码公布
  10. WHERE和HAVING子句有什么区别?