Java 中函数的可见性和访问修饰符
Java 中的函数可见性和访问修饰符是程序设计中的关键概念。函数的可见性指的是函数在程序中能够被访问的范围,而访问修饰符用于控制类成员的可见性。Java 中有四个访问修饰符:public、private、protected 和默认。在本文中,我们将深入探讨这些概念,帮助读者理解 Java 中函数的可见性和访问修饰符。
一、Java 函数的可见性
Java 中函数的可见性决定了函数在程序中能否被访问。如果一个函数的可见性为 public,那么该函数可以被程序中的任何代码访问。如果一个函数的可见性为 private,那么只有在声明该函数的类内部才能访问它。如果一个函数的可见性为 protected,则只有同一包中或从该类派生的子类中才能访问该函数。最后,如果一个函数没有修饰符,它的可见性就是默认的,只能被同一包中的类访问。
下面是一个例子,用于演示 Java 几种不同的可见性:
public class Main {
public static void main(String[] args) {
MyPublicClass publicObj = new MyPublicClass();
publicObj.publicMethod(); //可以被访问
MyDefaultClass defaultObj = new MyDefaultClass();
defaultObj.defaultMethod(); //可以被访问(在同一包中)
MyProtectedClass protectedObj = new MyProtectedClass();
protectedObj.protectedMethod(); //可以被访问(在同一包中 或者 从该类派生的子类中)
MyPrivateClass privateObj = new MyPrivateClass();
//privateObj.privateMethod(); //不可以被访问,因为该函数只能在类内部被访问
}
}
class MyPublicClass {
public void publicMethod() {
System.out.println("This is a public method.");
}
}
class MyDefaultClass {
void defaultMethod() {
System.out.println("This is a default method.");
}
}
class MyProtectedClass {
protected void protectedMethod() {
System.out.println("This is a protected method.");
}
}
class MyPrivateClass {
private void privateMethod() {
System.out.println("This is a private method.");
}
}
在上面的例子中,我们创建了四个类,它们的可见性不同。MyPublicClass 中的 publicMethod 可以被程序中所有的代码访问,MyDefaultClass 中的 defaultMethod 只能在同一包中访问,MyProtectedClass 中的 protectedMethod 可以在同一包中和从该类派生的子类中访问,而 MyPrivateClass 中的 privateMethod 只能在该类内部访问。
二、Java 访问修饰符
在 Java 中,使用访问修饰符控制类成员的可见性。除了默认修饰符,Java 中共有三种访问修饰符:public、private 和 protected。下面介绍每一个访问修饰符的含义和适用场景。
1. public
public 表示公共的,修饰的成员可以被程序中所有的代码访问。public 成员没有限制,所以它们可以在程序的任何地方被访问。public 成员的适用场景是需要被程序中所有的代码访问的属性和方法。
2. private
private 表示私有的,修饰的成员只能被声明该成员的类内部的代码访问。private 成员的适用场景是只在该类内部使用的属性和方法。
3. protected
protected 表示受保护的,修饰的成员只能在同一包中或从该类派生的子类中访问。protected 成员的适用场景是只在同一包或子类中使用的属性和方法。
下面是一个例子,用于演示访问修饰符的用法:
public class Main {
public static void main(String[] args) {
MyPublicClass publicObj = new MyPublicClass();
publicObj.publicMethod(); //可以被访问
MyDefaultClass defaultObj = new MyDefaultClass();
defaultObj.defaultMethod(); //可以被访问(在同一包中)
MyProtectedClass protectedObj = new MyProtectedClass();
protectedObj.protectedMethod(); //可以被访问(在同一包中 或者 从该类派生的子类中)
MyPrivateClass privateObj = new MyPrivateClass();
//privateObj.privateMethod(); //不可以被访问,因为该函数只能在类内部被访问
}
}
class MyPublicClass {
public void publicMethod() {
System.out.println("This is a public method.");
}
}
class MyDefaultClass {
void defaultMethod() {
System.out.println("This is a default method.");
}
}
class MyProtectedClass {
protected void protectedMethod() {
System.out.println("This is a protected method.");
}
}
class MyPrivateClass {
private void privateMethod() {
System.out.println("This is a private method.");
}
}
在上面的例子中,我们创建了四个类,它们的可见性不同。MyPublicClass 中的 publicMethod 可以被程序中所有的代码访问,MyDefaultClass 中的 defaultMethod 只能在同一包中访问,MyProtectedClass 中的 protectedMethod 可以在同一包中和从该类派生的子类中访问,而 MyPrivateClass 中的 privateMethod 只能在该类内部访问。
总结
Java 中函数的可见性和访问修饰符是程序设计中的核心概念。函数的可见性指的是函数在程序中能够被访问的范围,而访问修饰符用于控制类成员的可见性。Java 中有四种可见性:public、private、protected 和默认,分别对应了四种不同的访问权限。编写程序时需要根据不同的需求选择合适的访问修饰符,以提高程序的可读性和安全性。
