Java访问修饰符的简介说明
Java访问修饰符:
我们都知道java中修饰符分两种类型:访问修饰符和非修饰符
Java中的访问修饰符用于设置数据成员,方法,构造函数或类的范围
常见的Java修饰符有以下4
种:
private
default
protected
public
其它的非访问修饰符,如:static
, abstract
, synchronized
, native
, volatile
, transient
等修饰符
下文将着重讲述Java的访问修饰符
private访问修饰符
private:私有(private
)访问修饰符
设置相应的对象只可在类中访问
例:private访问修饰符
创建一个类,使用private设置其数据成员,然后编译会出现相应的错误信息
class testClassA {
private int qty= 88;
private void printInfo() {
System.out.println("printInfo");
}
}
public class testClassB{
public static void main(String args[]) {
testClassA obj = new testClassA();
System.out.println(obj.qty);// 由于使用private,所以类外面不能访问,编译会报错
obj.printInfo();// 私有方法,所以类外面不能访问,编译会报错
}
}
1. private访问修饰符
当使用private修饰类的构造函数,则类外部创建类实例会失败
例:
class testClass {
private testClass () {
}// private constructor
void printInfo() {
System.out.println("print");
}
}
public class testClassB{
public static void main(String args[]) {
testClass obj = new testClass();// 编译报错
}
}
2. default访问修饰符
当不加入修饰符时,则缺省值为default修饰符
default修饰符的目的,对象只能在包内访问。
例:default访问修饰符
创建包packA
和 packB
。
从一个包中访问另一个包的类
---testA.java
package packA;
class testA{
void printInfo(){System.out.println("print1");}
}
----testB.java
package packB;
import packA.*;
class testB {
public static void main(String args[]) {
testA obj = new testA();// 编译报错
obj.printInfo();// 编译报错
}
}
----上文的例子中,testA类及printInfo都使用的为default修饰符,所以包外面无法访问
3. protected访问修饰符
protected
访问修饰符:设置对象可以在包中和包外部访问,但只能使用继承模式
protected
访问修饰符常用于修改数据成员,方法和构造函数
注意事项:protected修饰符不能应用于类
例:protected访问修饰符
创建包packA
和packB
packA
类的包是public
的,所以可以从外部访问包。 但是这个包的printInfo
方法声明为protected
,
因此只能通过继承从类外面访问它
//testClassA.java
package packA;
public class testClassA {
protected void printInfo() {
System.out.println("java265.com");
}
}
//testClassB.java
package packB;
import packA.*;
class packB extends packA {
public static void main(String args[]) {
packB obj = new packB();
obj.printInfo();
}
}
----运行以上代码,将输出以下信息-----
java265.com
4. public访问修饰符
公共(public
)访问修饰符:可随处访问
它是我们使用最广泛的修饰符
例:public访问修饰符
//save by testClassA.java
package packA;
public class testClassA {
public void printInfo() {
System.out.println("java265.com");
}
}
//testClassB.java
package packB;
import packA.*;
class testClassB {
public static void main(String args[]) {
testClassA obj = new testClassA();
obj.printInfo();
}
}
-----运行以上代码,将输出以下信息----
java265.com
java访问修饰符总览表
访问修饰符 | 在类内 | 在包内 | 外部包只通过子类 | 外部包 |
---|---|---|---|---|
Private | Y | N | N | N |
Default | Y | Y | N | N |
Protected | Y | Y | Y | N |
Public | Y | Y | Y | Y |
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。