Java 修饰符

本文介绍了Java中的修饰符,包括接口修饰符、类修饰符、方法修饰符、属性修饰符和访问修饰符的访问权限。详细讲解了接口中的变量默认为公共静态常量,类修饰符的使用规则,方法修饰符的限制,属性修饰符中的实例变量和类变量初始化,以及四种访问权限的作用范围。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接口修饰符

访问修饰符 interface 接口名称 extends 接口列表

接口不能够定义其声明的方法的任何实现。

接口中的变量总是需要定义为“public static final 接口名称”,但可以不包含这些修饰符,编译器默认就是这样,显示的包含修饰符主要

public

所有包可见

无访问修饰符(默认)

同一个包内可见

类修饰符

访问修饰符 非访问修饰符 class 类名称 extends 父类名称 implement 接口名称

(访问修饰符与非访问修饰符的位置可以互换)

访问控制符

公共类修饰符

public

每个 Java 程序的主类都必须是 public 类,public 类必须定义在和类名相同的同名文件中;

将一个类声明为公共类,他可以被任何对象访问;

缺省默认

默认的访问权限,可以省略此关键字,可以定义在和 public 类的同一个文件中;

如果一个类没有访问控制符,说明它具有缺省的访问控制符特性,只能被同一个包中的类访问或引用;

非访问控制符

抽象类修饰符

abstract

抽象类是指这种类没有具体对象的一种概念类;

将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现。如果要使用 abstract 类,必须先建一个继承 abstract 类的新类,然后在新类中实现 abstract 类中的抽象方法;

一个类只要有一个 abstract 方法,就必须定义为abstract;

abstract 类可以包含其他方法,也可以不包含 abstract 方法;

最终类修饰符

final

final 将一个类声明为最终类(即非继承类),表示不能被其他类继承;

0被定义为 final 的类通常是一些有固定作用、用来完成某种标准功能的类;

方法修饰符

访问修饰符 修饰符 返回类型 方法名称(参数列表)throws 违例列表

类的构造器方法不能够有修饰符、返回类型和throws子句,且方法名必须和类名相同。

访问控制符

公共访问控制符

public

可以被所有类访问(使用)

私有访问控制符

private

可以被同一个包中的类访问(使用)

保护访问控制符

protected

可以被该类自身、与它在同一个包中的其它类和该类的子类访问(使用)

私有保护访问控制符

private protected

可以被该类本身和该类的子类访问(使用)
非访问控制符

抽象方法修饰符

abstract

用 abstract 修饰的方法称为抽象方法;

抽象方法是一种仅有方法头,没有方法体和操作实现的一种方法;

不能将static方法、final方法或者类的构造器方法声明为 abstract;

最终方法修饰符

final

用 final 修饰的方法称为最终方法;

最终方法是功能和内部语句不能更改的方法,即最终方法不能重载。这样,就固定了这个方法所具有的功能和操作,防止当前类的子类对父类关键方法的错误定义,保证了程序的安全性和正确性;

所有被 private 修饰符限定为私有的方法,以及所有包含在 final 类 ( 最终类 ) 中的方法,都被认为是最终方法;

可以同 static 一起使用,避免对类的每个实例维护一个拷贝;

静态方法修饰符

static

用 static 修饰的方法称为静态方法(又称为类方法);

静态方法是属于整个类的类方法,所以它不能操纵和处理属于某个对象的成员变量,而只能处理属于整个类的成员变量,即 static 方法只能处理 static 的域;

静态方法提供不依赖于类实例的服务,不需要创建类的实例就可以访问静态方法

本地方法修饰符

native

用修饰符 native 修饰的方法称为本地方法;

为了提高程序的运行速度,需要用其它的高级语言(大多数情况下是用C、C++)书写程序的方法体,那么该方法可定义为本地方法用修饰符 native 来修饰;

Sun的Java Native接口(JNI)提供了运行时加载一个native方法的实现,并将其于一个Java类关联的功能;

同步方法修饰符

synchronized

synchronized 修饰符主要用于多线程共存的程序中的协调和同步;

当一个此方法被调用时,没有其它线程能够调用该方法,其它的synchronized方法也不能调用该方法,直到该方法返回;

属性修饰符

访问修饰符 修饰符 变量名称

Java中没有全局变量,只有方法变量、实例变量(类中的非静态变量)、类变量(类中的静态变量)。

方法中的变量不能够有访问修饰符。

可以通过实例变量初始化器来初始化较复杂的实例变量,实例变量初始化器是一个用{}包含的语句块,在类的构造器被调用时运行,运行于父类构造器之后,构造器之前。

类变量(静态变量)也可以通过类变量初始化器来进行初始化,类变量初始化器是一个用static{}包含的语句块,只可能被初始化一次。

访问控制符

公共访问控制符

public

用 public 修饰的域称为公共域;

如果公共域属于一个公共类,则可以被所有其它类所引用;

由于 public 修饰符会降低运行的安全性和数据的封装性,所以一般应减少 public 域的使用;

私有访问控制符

private

用 private 修饰的成员变量只能被该类自身所访问,而不能被任何其它类 ( 包括子类 ) 所引用;

保护访问控制符

protected

用 protected 修饰的成员变量可以被:该类自身、与它在同一个包中的其它类和该类的子类访问和引用;

使用修饰符 protected 的主要作用是允许其它包中它的子类来访问父类的特定属性;

私有保护访问控制符

private protected

用 private protected 修饰的成员变量可以被:该类本身和该类的子类访问和引用。
非访问控制符

最终域修饰符

final

f一个类的域 ( 成员变量 ) 如果被修饰符 final 说明,则它的取值在程序的整个执行过程中都是不变的;

注意不要使用 const 来定义常量,虽然它和C、C++中的const关键字含义一样

可以同 static 一起使用,避免对类的每个实例维护一个拷贝

静态域修饰符

static

用 static 修饰的成员变量称为静态变量(又称为类变量)

静态变量仅属于类的变量,而不属于任何一个具体的对象,静态成员变量的值是保存在类的内存区域的公共存储单元,而不是保存在某一个对象的内存区间;

静态变量可以被类的所有实例共享,任何一个类的对象访问它时取到的都是相同的数据,任何一个类的对象修改它时 , 也都是对同一个内存单元进行操作;

并不需要创建类的实例就可以访问静态变量

易失 ( 共享 ) 域修饰符

volatile

易失 ( 共享 ) 域修饰符 volatile 是用来说明这个成员变量可能被几个线程所控制和修改。也就是说在程序运行过程中,这个成员变量有可能被其它的程序影响或改变它的取值。因此,在使用中要注意这种成员变量取值的变化;

通常 volatile 用来修饰接受外部输入的域。

暂时性域修饰符

transient

暂时性域修饰符 transient 用来定义一个暂时性变量;

其特点是:用修饰符 transient 限定的暂时性变量,将指定 Java 虚拟机认定该暂时性变量不属于永久状态,以实现不同对象的存档功能。否则,类中所有变量都是对象的永久状态的一部分,存储对象时必须同时保存这些变量。

访问修饰符访问权限

public 访问权限最高,不论是不是同一个包或是否是子类,都可以访问;
protected 其次,只有是不同包且不是子类的无法访问外,其它均可访问;
默认缺省 次之,要求只能是同一个包中的类才能访问;
private 只能是同一个类才能访问;
四个访问修饰符可以修饰方法或者属性,但是类只能用 public 或者默认缺省

位置同一个类可见同一个包可见不同包子类可见不同包非子类可见
public

protected 
默认缺省  
private   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值