欢迎访问宙启技术站
智能推送

理解Java函数的可见性修饰符

发布时间:2023-05-19 18:02:30

Java中的函数有4种可见性修饰符,分别为public、protected、private和默认(即无修饰符)。这些修饰符决定了哪些类可以访问该函数,从而保障了Java程序的封装性。

1. public可见性修饰符

public修饰符是最为开放的修饰符,它可以使得在任何地方都能访问到被修饰的函数。也就是说,该函数对于所有的类都是可见的。public函数可以被任何类的对象调用,可以被用于构造器和静态方法。通常情况下,我们建议将公共访问的函数使用public修饰符进行修饰。

下面是一个使用public修饰符的函数的例子:

public class Demo {
   public void getName() {
      System.out.println("这是一个公共函数,任何类都可以访问到该函数!");
   }
}

2. protected可见性修饰符

protected修饰符仅仅会在继承层次中产生作用。在同一个包的类中是可以访问到被protected修饰的函数的,而在不同包中的子类也可以访问到被protected修饰的函数。对于其他包中的类,它们是不能直接访问protected修饰的函数的。

下面是一个使用protected修饰符的函数的例子:

public class Father {
   protected void getMoney() {
      System.out.println("这是父类的保护函数!");
   }
}

public class Son extends Father {
   public void callGetMoney() {
      getMoney();   // 子类可以使用父类的protected函数
   }
}

在上例中,Son类可以调用Father类中被protected修饰的getMoney()函数,因为Son是Father类的子类,而且在同一个包中。由于其他不同包的类是不能直接访问protected函数的,所以开发者通常不建议使用protected修饰符进行修饰。

3. private可见性修饰符

private修饰符能够使得被修饰的函数仅仅在所在类中可见。其他类都不可以访问该函数。一般情况下,我们会将一些内部的辅助函数使用private修饰符进行修饰,从而达到保护数据的目的,防止数据被其他函数和类所访问。

下面是一个使用private修饰符的函数例子:

public class Demo {
   private void printName() {
      System.out.println("这是一个私有函数,仅仅在Demo类中可见!");
   }
}

在上例中,仅仅Demo类中才能够访问到printName()函数,其他的类都是无法访问这个函数的。

4. 默认(即无修饰符)可见性

当函数没有被任何的访问修饰符所修饰时,它的可见性就是默认可见性。默认的修饰符只有在同一包内或子类中才能进行访问。其他包中的类都是不能访问到这个函数的。

下面是一个使用默认可见性的函数的例子:

class Demo {
   void printName() {
      System.out.println("这是一个默认可见性的函数,仅仅在当前包中可见!");
   }
}

在上例中,除了Demo类所在的包之外,其他的类都无法访问到printName()函数。

总结

Java中的函数可见性修饰符包括public、protected、private和默认,它们分别决定了哪些类可以访问该函数。开发者可以根据需要选择合适的修饰符,使得函数的可见性能够满足需求,同时又能够达到封装数据和保护数据的目的。