Java语言提供了很多修饰符,主要分为以下两类:

  • 访问修饰符
  • 非访问修饰符

访问控制修饰符

访问控制修饰符用来修饰类和类内部的成员变量和成员方法,来确定其访问权限

类的访问控制修饰符只有两种 default 和 public

default (即缺省,什么也不写): 只在同一包内可见。不能引入其包中

  类A为default,当类A和类B位于同一个包内,那么可以在类B中直接使用new A() 来创建类A的实例,而不需要先引入类A

  当类A和类B不位于同一个包中,则在类B文件中无法引入类A,更无法在类B中使用new A() 来创建类A的实例

public : 对所有类可见。同一个包中可直接使用,不需要引入。不同包中则需要先引入才能使用

  类A为public ,当类A和类B位于同一个包内,那么可以在类B中直接使用new A() 来创建类A的实例,而不需要先引入类A

  当类A和类B不位于同一个包中,则在类B文件中引入类A后,在类B中也可以使用new A() 来创建类A的实例

成员变量和成员方法的访问控制修饰符有四种 private,default,protected,public

主要通过以下几个方面来判断其访问范围

  • 类内访问 和 类外访问
  • 包内访问 和 包外访问
  • 继承类内访问

继承类内的访问又分为

  • 包内继承类的访问
  • 包外继承类的访问

private: 只能在本类内直接访问,不能再类外访问。也不能再继承类内直接访问

default:只能在包内访问,而不能在包外访问。只要在包内,类内,类外,继承类内都可以直接访问

protected:只能在包内和包外的继承类内访问。

     在包内时,与default相同,但在包外时,继承类内可以直接访问继承于父类的protected成员,但不能直接访问继承于父类的default成员

public:在所有范围内可以直接访问

类内访问和类外访问

类内访问是指在类内内部直接访问该类成员,而不需要先创建实例

类外访问是指在该类的外部(也就是其他类中)访问该类的成员,需要先在其他类中创建该类的实例,再通过实例来访问该类的成员

修饰符 当前类 同一包内非继承类 同一包内继承类 不同包继承类 不同包非继承类
public Y Y Y Y Y
protected Y Y Y Y/N(说明 N
default Y Y Y N N
private Y N N N N

非访问修饰符

为了实现一些其他的功能,Java 也提供了许多非访问修饰符。

static 修饰符,用来修饰类方法和类变量。

final 修饰符,用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。

abstract 修饰符,用来创建抽象类和抽象方法。

synchronized 和 volatile 修饰符,主要用于线程的编程。

java学习--修饰符的更多相关文章

  1. java访问修饰符

    了解面向对象思想的同学们,都知道"封装"这一基本特征,如何正确运用访问修饰符,恰恰能体现出封装的好坏. java访问修饰符有四个: 1)public:访问权限最高,其修饰的类.类变 ...

  2. Java的修饰符

    转自:http://blog.csdn.net/manyizilin/article/details/51926230#L42 修饰符: 像其他语言一样,Java可以使用修饰符来修饰类中方法和属性.主 ...

  3. JAVA类型修饰符(public,protected,private,friendly)

    JAVA类型修饰符(public,protected,private,friendly) public的类.类属变量及方法.包内及包外的不论什么类均能够訪问:protected的类.类属变量及方法,包 ...

  4. Java访问修饰符(访问控制符)

    Java 通过修饰符来控制类.属性和方法的访问权限和其他功能,通常放在语句的最前端.例如: public class className { // body of class } private bo ...

  5. Java类修饰符的使用与作用以及常见问题

    首先明确,类是放在文件里的,在文件里面的不同位置就有不同的作用,就是不同类型的类. 1, 顶级类or外部类:包括两种,一个文件中与文件名同名称的类我们称作顶级类(也是外部类),如果在一个文件中的一个类 ...

  6. C#和JAVA 访问修饰符

    JAVA ----------------------------------------------- 访问修饰符        描述 ------------------------------- ...

  7. 《Java基础知识》Java访问修饰符(访问控制符)

    Java 通过修饰符来控制类.属性和方法的访问权限和其他功能,通常放在语句的最前端.例如: public class className { // body of class } private bo ...

  8. Java static修饰符

    Java static修饰符 static修饰符是静态修饰符,大家写Java第一次接触static就是主函数中的pubic static void main的声明了. 那么static有什么用?本文来 ...

  9. 详解java访问修饰符

    详解java访问修饰符 为了防止初学者看到因为专业的术语而感觉晦涩难懂,我接下来尽量用生动比喻的说法来解释!首先第一点,我们来讲讲什么叫修饰符!看看这个名称,想想他的意思.修饰符!修饰符!,就是用来修 ...

随机推荐

  1. TypeScript 学习资料

    TypeScript 学习资料: 学习资料 网址 TypeScript Handbook(中文版)(推荐) https://m.runoob.com/manual/gitbook/TypeScript ...

  2. Dubbo和Spring Cloud

    1.Dubbo和Spring Cloud区别 1).通信方式不同 Dubbo使用RPC通信,Spring Cloud使用Http RestFul方式 2) 组成部分不同 组件 Dubbo Spring ...

  3. 【转】/etc/rc.d/rc与/etc/rc.d/init.d的关系介绍

    /etc/rc.d/init.d这个目录下的脚本就类似与windows中的注册表,在系统启动的时候执行.程序运行到这里(init进程读取了运行级别),相信从命名的角度大家也能猜到该运行/etc/rc. ...

  4. sort简单用法

    -u 去重## 查看文件内容cat test_sort.txt ## sort -u 去重cat test_sort.txt |sort -u----------------------------- ...

  5. SpringMVC Mybatis Spring

    Spring MVC Mybatis整合过程中 Mapper.java 不需要使用 @componenet, Service 等spring注解 但是在service 中创建mapper对象的时候是需 ...

  6. 高度自适应的div

    需求:有一个高度自适应的div,里面有两个div,一个高度100px,希望另一个填满剩下的高度 1.用flex 来实现 思路:flex 垂直布局(column),第一个元素固定高度,第二个元素flex ...

  7. M25P16中文版

    转载:https://blog.csdn.net/weiweiliulu/article/details/23666717 1.M25P16概述     M25P16是一款带有先进写保护机制和高速SP ...

  8. .Net Core跨平台应用研究-HelloArm(串口篇)

    引言 为了验证采用dotnet core技术开发的物联网设备数据采集接入服务应用是否能在高性价比的linux嵌入式平台运行,针对dotnet core应用程序进行嵌入式linux环境的发布部署运行验证 ...

  9. CBSN NEWS

    https://www.cbsnews.com/video/fatal-crossing/

  10. Resharper快捷键汇总

    编辑Ctrl + Space 代码完成 Ctrl + Shift + Space代码完成Ctrl + Alt + Space代码完成Ctrl + P 显示参数信息Alt + Insert 生成构造函数 ...