Java中的private、protected、public和default的区别(详解)
Java是一门有名的面向对象编程语言,在面向对象的编程中,访问控制(non-accessibility)是至关重要的一环。Java提供了四种访问修饰符,使用不同的访问级别控制程序员能否使用类、变量、方法等等。在这篇文章中,我们将详细探讨Java中的四种访问修饰符:private、protected、public、default。
private
private是Java中最严格的访问修饰符,只能在声明这个成员变量或成员方法的类中直接访问,即使是在同一个包中的其他类也不能访问。私有成员只能通过类内公共方法才能访问。
示例
下面的代码创建了一个Person类,其中age是私有变量,通过getAge()和setAge()方法,才能在类外访问age变量。
public class Person {
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
protected
protected访问修饰符允许子类访问其父类的字段和方法。这意味着如果一个类被定义为protected,它可以被同一包中的任何类访问,或任何其他包中的子类访问,即使这些子类并不在同一包中。
示例
下面的代码创建了一个Person类,其中有一个protected方法,名为doSomething()。然后创建了一个Employee类,继承了Person类,并覆盖了doSomething()方法。
public class Person {
protected void doSomething(){
System.out.println("Person's protected method");
}
}
public class Employee extends Person {
public void doSomething(){
System.out.println("Employee's public method");
}
}
public
public是Java中最常见的访问修饰符,它在任何位置都可以访问。如果一个类被定义为public,则它可以被任何其他类访问,不管这些类是否在同一包中。
示例
下面的代码创建了一个Person类,其中有一个公共方法,名为sayHello()。创建了一个实例化的Person对象,然后调用了其sayHello()方法。
public class Person {
public void sayHello(){
System.out.println("Hello, World!");
}
}
public class Example {
public static void main(String[] args) {
Person person = new Person();
person.sayHello();
}
}
default
如果不指定任何访问修饰符,则被定义为default。default修饰符只能在同一包中可见,即默认不可见的。如果一个类没有被定义为public,则它通常是一个默认访问修饰符。
示例
下面的代码创建了一个名为MyClass的类,并将其定义为默认访问修饰符。然后在MyClass所处的同一包中,创建了一个Example类实例,并访问了MyClass中的defaultValue变量。
class MyClass {
String defaultValue = "Hello, World!";
}
public class Example {
public static void main(String[] args) {
MyClass myClass = new MyClass();
System.out.println(myClass.defaultValue);
}
}
结论
访问修饰符是Java中面向对象编程的一个重要方面。private,protected,public和default是我们在Java中定义和访问类、变量、方法等时所使用的关键字。我们必须小心地使用这些关键字,以便在不同的类和包之间定义和使用类的可见性。在每个不同的情况下,我们都应该了解每个访问修饰符的限制和优点,并据此选择恰当的修饰符。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中的private、protected、public和default的区别(详解) - Python技术站