Java修饰符类型(public、protected、private)小结

Java修饰符号类型:

public:Java语言中访问限制最宽的修饰符,一般称之为“公共的”。被其修饰的类、属性以及方法不仅可以跨类访问,而且允许跨包(package)访问。

private:Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”。被其修饰的类、属性以及方法只能被该类的对象访问,其子类不能访问,更不能允许跨包访问。

protected:介于public 和 private 之间的一种访问修饰符,一般称之为“保护形”。被其修饰的类、属性以及方法只能被类本身的方法及子类访问,即使子类在不同的包中也可以访问。

default:即不加任何访问修饰符,通常称为“默认访问模式“。该模式下,只允许在同一个包中进行访问。

(一)类

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

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

访问修饰符
名称 说明 备注
public 可以被所有类访问(使用) public类必须定义在类名相同的同名文件中
package 可以被同一个包中的类访问(使用) 默认的访问权限,可以省略此关键字,可以定义在和public类的同一个文件中
修饰符
名称 说明 备注
final 使用此修饰符的类不能被继承  
abstract 如果要使用abstract类,之前必须首先建一个继承abstract类的新类,新类中实现abstract类的抽象方法。 类只要有一个abstract方法,类就必须定义为abstract类,但abstract类不一定非要保护abstract方法。

(二)变量

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

2、方法中的变量不能够有访问修饰符。所以下面访问修饰符表仅针对于在类中定义的变量。

3、声明实例变量时,如果没有赋初值,将被初始化为null(引用类型)或者0、false(原始类型)。

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

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

访问修饰符
名称 说明 备注
public 可以被任何类访问  
protected 可以被同一包中的所有类访问;可以被所有子类访问,子类可跨包。 子类没有在同一包中也可以访问
private 只能够被当前类的方法访问 子类不能访问
缺省 可以被同一包中的所有类访问 如果子类不是在同一个包中,则不可访问。
修饰符
名称 说明 备注
static 静态变量(又称为类变量,其他的称为实例变量) 可以被类的所有实例共享
final 常值,值只能分配一次,不能更改 注意不要使用const,虽然它和C、C++中的const关键字含义一样;可以同static一起使用,避免对类的每个实例维护一个拷贝。
transient 告诉编译器,在类对象序列化的时候,此变量不需要持久保存 主要是因为改变量可以通过其它变量来得到,使用它是为了性能的问题
volatile 指出可能有多个线程修改此变量,要求编译器优化以保证对此变量的修改能够被正确的处理  

(三)方法

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

1、类的构造器方法不能够有修饰符、返回类型和throws子句。

2、类的构造器方法被调用时,它首先调用父类的构造器方法,然后运行实例变量和静态变量的初始化器,然后才运行构造器本身。(很重要)

3、如果构造器方法没有显示的调用一个父类的构造器,那么编译器会自动为它加上一个默认的super(),而如果父类又没有默认的无参数构造器,编译器就会报错。super必须是构造器方法的第一个子句。(很重要)

4、注意理解private构造器方法的使用技巧。

访问修饰符
名称 说明 备注
public 可以从所有类访问  
protected 可以被同一包中的所有类访问;可以被所有子类访问。 子类没有在同一个包中也可以访问
private 只能够被当前类的方法访问  
缺省 可以被同一包中的所有类访问 如果子类没有在同一个包中,也不能访问
修饰符
名称 说明 备注
static 静态方法(又称为类方法,其它的称为实例方法) 提供不依赖于类实例的服务;并不需要创建类的实例就可以访问静态方法。
final 防止任何子类重载该方法 注意不要使用const,虽然它和C、C++中的const关键字含义一样;可以同static一起使用,避免对类的每个实例维护一个拷贝。
abstract 抽象方法,类中已声明而没有实现的方法。 不能将static方法、final方法或者类的构造器方法声明为abstract
native 用该修饰符定义的方法在类中没有实现,而大多数情况下该方法的实现是用C、C++编写的。 参见Sun的Java Native接口(JNI),JNI提供了运行时加载一个native方法的实现,并将其于一个Java类关联的功能
synchronized 多线程的支持 当一个此方法被调用时,没有其它线程能够调用该方法,其它的synchronized方法也不能调用该方法,直到该方法返回

(四)接口

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

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

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

访问修饰符
名称 说明 备注
public 所有  
无访问修饰符 同一个包内  

PS:本文转自“在路上”的《JAVA修饰符类型(public,protected,private,friendly)》,只做学习、交流之用。

时间: 2024-10-21 01:11:05

Java修饰符类型(public、protected、private)小结的相关文章

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

JAVA修饰符类型(public,protected,private,friendly) public的类.类属变量及方法,包内及包外的不论什么类均能够訪问:protected的类.类属变量及方法,包内的不论什么类,及包外的那些继承了此类的子类才干訪问:private的类.类属变量及方法,包内包外的不论什么类均不能訪问:假设一个类.类属变量及方法不以这三种修饰符来修饰,它就是friendly类型的,那么包内的不论什么类都能够訪问它,而包外的不论什么类都不能訪问它(包含包外继承了此类的子类),因此

java修饰符 protect public protected

1.private修饰词,表示成员是私有的,只有自身可以访问: 2.protected,表示受保护权限,体现在继承,即子类可以访问父类受保护成员(子类是可以访问父类的带protected修饰符的成员的),同时相同包内的其他类也可以访问protected成员. 3.无修饰词(默认),表示包访问权限(friendly, java语言中是没有friendly这个修饰符的,这样称呼应该是来源于c++ ),同一个包内可以访问,访问权限是包级访问权限:(默认情况下,是friendly类型的)  4.publ

浅析java修饰符之public default protected private static final abstract

浅析java修饰符之public default protected private static final abstract 一   修饰符的作用:用来定义类.方法或者变量,通常放在语句的最前端 二   分类(大致分两类) 1.访问修饰符,包括:public default protected private 2.非访问修饰符,包括:static final abstract 三 访问修饰符--Java中,可以使用访问控制符来保护对类.变量.方法和构造方法的访问.Java支持4种不同的访问权

[学习笔记]Java的访问指示符public,protected,private,缺省的作用域

0.引言 Java的访问指示符public,protected,private,缺省可以用来修饰类和方法. 1.作用域如下 public: 其它类都能访问此类或方法 protected: 为继承而生的,子类可以访问父类该修饰的方法 private: 为类自己所用,一般修饰成员变量 缺省: 同一个包内可用("友好"类) 2.同一个java文件里面若有多个类 (1) 每个编译单元(文件)都只能有一个public 类.每个编译单元有一个公共接口的概念是由那个公共类表达出来的.根据自己的需要,

详解Java中的访问控制修饰符(public, protected, default, private)

Java中的访问控制修饰符已经困惑笔者多时,其中较复杂的情况一直不能理解透彻.今天下定决心,系统.全面地研究Java中的访问控制修饰符的所有方面,并整理成这篇文章,希望有同样疑惑的读者读完后能有所收获.如果文章中出现错误,欢迎评论指出,共同交流~ 说在前面:这篇文章只研究Java中访问控制修饰符声明类的变量/方法的情况. 先抛出结论: * 成员变量/方法的访问权限 *                                        private        default  

Java修饰符:public,protected,private,不加修饰符。有什么区别呢?

问题 精华回答 如下表所示,Y表示能访问(可见性),N表示不能访问,例如第一行的第3个Y,表示类的变量/方法如果是用public修饰,它的子类能访问这个变量/方法 修饰符 类内部 同个包(package) 子类 其他范围 public Y Y Y Y protected Y Y Y N 无修饰符 Y Y N or Y(见说明) N private Y N N N 说明: 需要特别说明"无修饰符"这个情况,子类能否访问父类中无修饰符的变量/方法,取决于子类的位置.如果子类和父类在同一个包

java四种权限修饰符(public > protected > (default) > private)

权限修饰符在哪里可以访问 (default) : 表示什么权限修饰符都不写 位置 public protected (default) private 同一个类 yes yes yes yes 同一个包 yes yes yes no 不同包子类 yes yes no no 不同包非子类 yes no no no 原文地址:https://www.cnblogs.com/zhuobo/p/10612656.html

Java修饰符类型

转自原文:http://www.yiibai.com/java/java_modifier_types.html 修饰符是添加到这些定义来改变它们的含义的关键词. Java语言有各种各样修饰词,其中包括以下内容: Java 访问修辞符 非访问修饰符 要使用修改器,包括它的类,方法或变量的定义关键字.该修改之前的语句的部分,如下面的例子(斜体的): public class className { // ... } private boolean myFlag; static final doub

java修饰符、访问控制

JAVA修饰符类型(public,protected,private,friendly) public的类.类属变量及方法,包内及包外的任何类均可以访问:protected的类.类属变量及方法,包内的任何类,及包外的那些继承了此类的子类才能访问:private的类.类属变量及方法,包内包外的任何类均不能访问:如果一个类.类属变量及方法不以这三种修饰符来修饰,它就是friendly类型的,那么包内的任何类都可以访问它,而包外的任何类都不能访问它(包括包外继承了此类的子类),因此,这种类.类属变量及