基本介绍
java
提供四种访问控制修饰符号,用于控制方法和属性
(
成员变量
)
的访问权限(范围)
:
(1)
公开级别
:
用
public
修饰
,
对外公开
(2)
受保护级别
:
用
protected
修饰
,
对子类和同一个包中的类公开
(3)
默认级别
:
没有修饰符号
,
向同一个包的类公开
(4)
私有级别
:
用
private
修饰
,
只有类本身可以访问
,
不对外公开
访问修饰符的访问范围
public>protected>默认>private
使用的注意事项
(1)修饰符可以用来修饰类中的属性,成员方法以及类
(2)只有默认的和public可以修饰类,并且遵循上述访问权限的特点
(3)成员方法的属性和访问规则完全一样
代码
Test类
public class Test {
public static void main(String[] args) {
A a = new A ();
a.m1();
B b = new B();
b.say();
}
}
A类
public class A {
//四个属性,分别使用不同的访问修饰符来修饰
public int n1 = 100;
protected int n2 = 200;
int n3 = 300;
private int n4 = 400;
public void m1() {
//在同一类中,可以访问 public protected 默认 private 修饰属性和方法
System.out.println("n1=" + n1 + " n2=" + n2 + " n3=" + n3 + " n4=" + n4);
}
protected void m2() { }
void m3() { }
private void m4() { }
public void hi() {
//在同一类中,可以访问 public protected 默认 private 修饰属性和方法
m1();
m2();
m3();
m4();
}
}
在方法hi中,通过m1、m2、m3和m4,可以在同一类中访问类A中的不同属性和方法
B类
public class B {
public void say() {
A a = new A();
//在同一个包下,可以访问 public , protected 和 默认修饰属性或方法,不能访问 private 属性或方法
System.out.println("n1=" + a.n1 + " n2=" + a.n2 + " n3=" + a.n3 );
a.m1();
a.m2();
a.m3();
//a.m4(); 错误的
}
}
打印了属性n1、n2和n3的值,并调用了方法m1、m2和m3。
-
因为n1、n2和n3具有包级访问权限,所以可以在同一包下的类中访问。
-
m1、m2和m3也具有相应的访问权限,所以可以在同一包下的类中调用。
-
由于m4使用了private修饰符,无法在类B中直接调用
在say()方法中,创建了一个A类的对象a,并通过对象a访问了A类中的属性和方法。
-
属性n1和n2使用了public和protected修饰符,所以可以在同一包下的类中访问。
-
属性n3未使用访问修饰符,默认使用包级访问权限,所以可以在同一包下的类中访问。
-
方法m1、m2和m3使用了public、protected和默认修饰符,所以可以在同一包下的类中访问。
-
方法m4使用了private修饰符,所以无法在类B中直接访问
运行截图
总结
访问修饰符是面向对象编程中一个基础的概念。不同的访问修饰符提供了不同的访问权限,使得我们可以更好地组织代码和控制代码的可见性。通过掌握不同访问修饰符的含义,可以更好地编写出安全、灵活、可扩展的代码。
希望本篇博客对你理解访问修饰符和其在面向对象编程中的重要性有所帮助。如果还有疑问或需要进一步讨论,请随时提问。