java中,涉及到多态的时候,父类中的变量要加private修饰吗?用idea做演示
时间: 2024-09-08 17:00:47 浏览: 41
java 从入门到精通.zip
Java中的多态并不强制要求父类的成员变量(包括公有、私有或受保护的)必须使用`private`修饰。多态主要涉及的是方法的覆盖(overriding)和隐藏(hiding),而不是对成员变量的访问控制。
当你创建一个子类并重写父类的方法时,子类的实例可以被视为父类的实例,这时就体现了多态性。即使父类的成员变量是`private`,只要通过子类的对象就能间接访问这些变量,因为子类可以通过公共方法暴露其内部状态。
在IntelliJ IDEA中演示这一点:
1. 创建一个简单的类结构:一个父类`Person`有一个`private`属性`name`,以及一个公开的获取名字的方法`getName()`;子类`Student`继承自`Person`并重写了`getName()`方法。
```java
// Person.java
class Person {
private String name;
public String getName() {
return name;
}
}
// Student.java
class Student extends Person {
@Override
public String getName() {
// 这里可以访问父类的private变量
return "Student's Name";
}
}
```
2. 在主程序中,你可以这样操作:
```java
// Main.java
public class Main {
public static void main(String[] args) {
Person student = new Student(); // 子类对象赋值给父类变量
System.out.println(student.getName()); // 调用的是子类重写的getName()
}
}
```
运行上述代码,虽然`student`是`Person`类型的引用,但实际上它引用的是`Student`实例,所以会打印"Student's Name",这就是多态的体现。
阅读全文