1、public:
该修饰符既可修饰class也可修饰class中的方法和字段。无论修饰谁,它都代表被修饰的对象可以被任何人、在任何地方使用,它所提供的访问权限是最大的。
当public修饰class时,还有一些相关的细节需要注意:一个编译单元中,只可以有一个public的class,并且该class的名称必须与编译单元的名称完全相同。设置为public的class,可以直接通过package.ClassName做import,可以使用new进行对象创建。
2、protected
该修饰符多用来修饰方法和字段,不能修饰一般的class,内部类除外。这个修饰符所表现的是“继承”的概念。
protected修饰方法和字段时,表示这些方法和字段只可被与它们所在类有继承关系的类使用,即使这些类不在同一package中。
protected可以修饰常规内部类,但不能修饰局部内部类。带有该修饰符的内部类可以在与outer class有继承关系的类中用outerClass.new创建并访问。
3、private
该修饰符的适用范围与protected相同。它所提供的访问权限最小,只有定义该方法、字段以及内部类的类才可以使用。
除上面三种访问权限以外,还有一种不需要关键字修饰的权限,即目标对象前不带任何修饰符,我们管这种访问权限叫做"friendly"。拥有这种访问权限的对象在相同package内可互相访问和使用。
4、static
该修饰符可修饰方法和字段。
一般情况下,我们在使用类中定义的方法或字段之前,通常都需要创建一个与之绑定的类的对象实例。也就是说,每一个实例都拥有各自的一份方法和字段。但是,如果方法和字段被设定为static的,那就是说这个方法或字段不在与特定的对象相关联,而是该类的所有实例共用一份。这样,对于static的method和field(假设它们都是public的),那我们就可以直接使用:ClassName.method()和ClassName.field来读取它们。其实也可用常规的对象实例读取,只不过所有对象的值都是一样的。
因为static方法不与特定类实例绑定,也就是说,调用该方法时不会隐式传入类实例的引用,因此在这种方法中不可以使用non-static的字段。
5、final
final可以使用在三个地方:类,方法,数据(包括字段、参数)。下面一一做介绍。
-
final字段:final所修饰的数据有两类:primitive型和reference型。对于前者,它表示字段经过初始化后value就不再会改变;对于后者,则是表示final所修饰的那个引用不可再指向其他对象,但是对象本身却可以更改。如果某数据只是final的,那么它的不变性只是针对某个对象实例;但如果它既是static的,又是final的,那么这个数据便拥有了一块无法改变的空间,不变性覆盖整个类。另外,编译器要求被定为final的字段,必须在使用之前进行初始化,即便不在定义的时候初始化,也要在构造函数中定义其值(如果它同时是static的,那就只能在定义时初始化了,因为static字段无法在构造函数中初始化),否则,编译器会报" The blank final field tax may not have been initialized"的错误。对于final的参数,它保证在此函数中无法更改词参数的指向。
-
final方法:将方法设置为final会锁住这个方法,使方法所在类的子类无法覆写它。如果我们希望一个方法在整个继承过程中保持不变,那么就可以用final进行限制。
-
final类:被置为final的类,将无法被其他类继承。因此这个类内部的所有方法自然而然都是final型的,因此没必要重复修饰。
分享到:
相关推荐
在Java编程中,窗口风格、窗口居中、组件拖动、文件路径处理和设置...对于"Java收集的代码段1(待续)常用代码段"这个主题,后续可能还会涉及到更多高级特性和实践技巧,持续学习和实践是提升Java GUI编程能力的关键。
3. 关键字是Java语言中已经被赋予特定意义的一些单词,不可以把这类词作为名字来用。 4. 使用关键字boolean来定义逻辑变量,使用关键字char来定义字符变量。 5. Java中byte型数组在内存中的存储形式是补码。 6. Java...
### PHP常用字符串处理函数总结 #### 1. 字符串分割与合并 在PHP中,处理字符串的分割与合并是日常开发中经常遇到的需求。以下是PHP中常用的字符串分割与合并函数: - `implode()`: 将数组元素合并为字符串,元素...
a面试大全2021是一套最新Java面试必问合集,这本面试手册包含了Java基础、Java集合、JVM、Spring、Spring Boot、Spring Cloud、Mysql、Redis、RabbitMQ、Dubbo、Netty、分布式及架构设计等方面的技术点。内容难度...
JAVA期末考试试题及答案 根据提供的文件信息,我们可以生成以下知识点: 1. JAVA 语言程序设计考试试题:单选题 * 题目 1:下列语句序列执行后,k 的值是多少?(B) int m=3, n=6, k=0;...(待续)
**题目:** 下列哪个是 Java 中的关键字? - A. sizeof - B. abstract - C. NULL - D. Native **答案:** B. abstract **解析:** 在 Java 中,“abstract”是一个关键字,用于声明抽象类或抽象方法。而其他选项均...
本资源总结了 Java 选择题含答案,涵盖了 Java 语言基础知识、数据类型、运算符、控制结构、方法、数组、字符串、面向对象编程、多线程、IO 操作等方面。 Java 语言基础知识 1. Java 语言标识符不能以下哪种形式?...
JDK(Java Development Kit)是 Java 开发工具包,提供了编译、运行 Java 程序所需的各种工具和资源,包括 Java 编译器、Java 运行时环境,以及常用的 Java 类库等。 JRE(Java Runtime Environment)是 Java 运行...
程序员还可以通过关键字定义常量、变量和类,并利用运算符和表达式来操作这些数据。 总的来说,C++是一门强大且灵活的编程语言,结合了面向过程和面向对象的特性,提供了丰富的库支持和内存管理机制,广泛应用于...
在Java程序员面试中,面试官通常会关注求职者对Java基础知识的掌握程度,包括但不限于类的作用域、匿名内部类、内部类的类型、位运算符与逻辑运算符的区别、集合框架的理解、断言的使用、字符串对象的创建、数学方法...
### Java SE 核心知识点详解 ...以上是对 Java SE 基础知识的一些总结,涵盖了从 Java 的基本概念到面向对象的基本思想。这些知识点是学习 Java 编程的基础,也是进一步深入学习和实践 Java 技术的前提。
Java 设计模式总结 Java 设计模式是软件开发中的一个重要概念,它们提供了一种通用的解决方案来解决常见的软件设计问题。下面是 23 种 Java 设计模式的总结: 创建型模式 创建型模式处理对象的创建机制,例如类的...
Java 面试题集锦 Java 基础知识点: 1. JDK 和 JRE 的区别: JDK(Java Development Kit)是 Java 开发工具包,提供了 Java 的开发环境和运行环境。JRE(Java Runtime Environment)是 Java 运行环境,为 ...(待续)
Java 编程基础知识点汇总 一、Java 入门知识点汇总 1. Java 三大体系:Java SE(J2SE)、Java EE(J2EE)、Java ME(J2ME) * Java SE:标准版,包含 Java 最核心的类库 * Java EE:企业版,开发、装配...(待续)
java 精典编程 100 例, author:朱千平 phone:13522080786 qq:200896066待续......
Java开发工程师精选面试题 本资源摘要信息主要是针对Java开发工程师面试的重要知识点,涵盖了Dubbo、ElasticSearch、JVM、多线程/高并发、消息中间件、SpringCloud等领域。 Dubbo相关知识点 1. Dubbo服务调用超时...
Java开发过程中,有时候我们需要查看和理解已编译的.class文件中的源代码,这对于逆向工程、调试或学习他人的代码非常有用。此时,就需要用到反编译工具,而jd-gui就是这样一款简单轻量的Java反编译工具。本文将深入...