Java程序展示不同的访问级别

1. 访问级别简介

在Java编程中,访问控制是通过访问级别(Access Level)来实现的。Java有四种访问级别,从严格到宽松分别是:private、default、protected、public。这些访问控制修饰符的作用是限制其他类或对象对被修饰成员的访问。一个类可以成员变量、方法、构造器、内部类或接口来声明这些访问级别。

2. private访问级别

2.1 类私有访问级别

在类成员变量的声明中使用private关键字,就表示这个成员变量是私有的,只能在定义它的类内部使用,其他类无法访问。下面是一个示例:

public class Person {

private String name;

private int age;

}

在上述代码中,name和age都被声明成了private,因此只有Person类内部可以访问和修改它们。其他任何类或对象都不能访问或修改这两个变量。

2.2 访问私有成员变量的方法

在类中访问私有成员,需要使用get/set方法。例如:

public class Person {

private String name;

private int age;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

在上述代码中,我们为类中的name变量提供了一个public方法getName(),在想要访问name变量时,就可以调用这个方法。同样的,如果想要修改name变量,那么就可以使用setName()方法。

3. default访问级别

3.1 类默认访问级别

如果在类成员变量的声明中没有使用任何的访问级别修饰符,那么这个变量的访问级别就是default。默认访问级别表示该成员只能被同一个包中的其他类访问,其他包中的类无法访问它。

class Student {

String name;

int age;

}

在上述代码中,name和age都没有被访问修饰符修饰,因此它们的访问级别就是default。也就是说,只有和Student类在同一个包中的其他类才能够访问这两个成员。

3.2 访问default成员的方法

和private访问级别类似,可以使用get/set方法访问default成员变量。同样的,如果我们想在同一个包中的其他类中访问这个类的成员,也可以直接使用该类的成员变量。

4. protected访问级别

4.1 类保护访问级别

protected访问级别表示该成员只能被该类、该类的子类以及和该类在同一个包中的其他类访问。在声明类成员时,使用protected关键字来修饰。

public class Animal {

protected void eat() {

System.out.println("Animal eat");

}

}

public class Cat extends Animal {

public void eat() {

System.out.println("Cat eat");

}

}

上述代码中,Animal类中的eat()方法被声明成了protected,因此Cat类可以继承该方法并重写它。其他在Animal类所在包中的类也可以访问这个方法。

4.2 访问protected成员的方法

使用protected修饰的成员,如果在同一个包中的其他类中访问,可以直接使用;如果在子类中访问,也可以直接使用。在其他包中访问,则需要通过子类对象来访问,或者在子类中增加public的get/set方法。即使使用get/set方法,也不可能直接访问protected成员变量或方法。另外,不要忘记在子类中使用super关键字调用父类的protected成员方法。

5. public访问级别

public访问级别表示该成员可以被该类的任何访问者访问,即所有类和对象都可以访问。 在声明类成员时,使用public关键字来修饰。

public class Person {

public String name;

public int age;

}

在上述代码中,name和age被声明成了public,因此在任何其他类中都可以直接访问这两个成员。也就是说,这两个成员完全不受访问修饰符的限制。

5.1 访问public成员的方法

使用public访问修饰符修饰的成员,可以在任何地方访问,直接使用即可。

6. 总结

Java的访问控制允许程序员在类内部控制类成员的访问。可以使用private、default、protected、public四种访问级别进行控制。私有的private只能被本类访问和修改,default只能被同一包内的其他类访问,保护的protected可以被本类、子类以及同一包内的其他类访问,公共的public可以被所有类和对象访问。

后端开发标签