在Java编程中,子类在继承父类对象的时候,boolena的对象在子类中设置,为什么在父类中依旧是false。代码如下package com.renting_house;
时间: 2024-09-26 20:05:12 浏览: 35
在Java中,当你创建一个子类对象并将其赋值给父类类型的引用时,这是静态类型与实例变量的一个例子。即使你在子类中设置了boolean类型的变量,由于父类引用的类型限制,它只能访问和修改父类中声明的成员变量,而不会影响子类新增或覆盖的属性。
例如:
```java
class ParentClass {
boolean isTrue = false;
}
class ChildClass extends ParentClass {
// 子类添加了新的布尔变量
private boolean childBoolean = true;
}
public class Main {
public static void main(String[] args) {
ParentClass parentObj = new ChildClass(); // 父类引用指向子类对象
System.out.println(parentObj.isTrue); // 输出: false,因为isTrue还是父类的原始值
System.out.println(parentObj.childBoolean); // 输出: true,这是子类特有的变量
}
}
```
在这个例子中,`parentObj.isTrue`始终显示为`false`,因为它是一个父类的字段,并没有被子类的`childBoolean`所改变。如果你想在父类引用上调用子类的布尔变量,你需要明确地使用子类的引用,如`((ChildClass)parentObj).childBoolean`。然而,这通常不是设计模式的一部分,除非有特定的需求去动态地切换行为。
阅读全文