我目前正在学习Java,来自PHP. 现在,我有点迷失了,因为我刚刚注意到,似乎没有什么比我在PHP中使用的延迟绑定的概念更好的了.

这是否意味着,我不能在基类中提供每个子类都可以与其自己的成员值一起使用的方法? 我的意思是,它必须有概念,因为很难想象,你必须 for each 子类添加这样的方法和函数……

让我举一个具体的例子,以防我不清楚我在想什么. 如何在Java中解决类似以下PHP struct 的问题?

abstract class BaseClass {
  protected String $value = 'Base';
    
  public function getValue(): String {
    return $this->value;
  }
}
    
class ChildClass extends BaseClass {
  protected String $value = 'Child';
}
    
$obj = new ChildClass();
print $obj->getValue();    // Shall print "Child"

非常感谢您的任何提示/澄清.

推荐答案

如果将初始化放在构造函数中,则可以根据类将字段初始化为不同的值.

public abstract class Base {
    String value;
    public Base() {
        value = "Base";
    }

    public String getValue() {
        return value;
    }
}

public class Child extends Base {
    public Child () {
        value = "Child";
    }

    public static void main(String[] argv) {
        Base x = new Child();
        System.out.println(x.getValue());
    }
}

Java相关问答推荐

Collections.binarySearch()使用Collections.reverseOrder()作为比较器返回-1

使用json参数通过单击jSP文件中的按钮来运行server时出现问题

如何用javac编译Java类,即使对像java.lang.*这样的基本类也没有任何依赖关系?

基于仅存在于父级中的字段查询子文档?

Cosmos Change Feed Process Lag远远超过收集中的记录数量

最小拓Flutter 排序的时间复杂度是多少?

neo4j java驱动程序是否会在错误发生时自动回滚事务?

调用引发泛型异常的泛型方法时出现编译错误

JavaFX如何在MeshView中修复多个立方体?

Arrays.hashcode(int[])为不同的元素提供相同的散列

使用用户引入的参数生成人员数组

为什么当我创建Robot对象时,JavaFX引发IlLegalStateException异常?

在执行流和相关操作时,使用Java泛型为2个方法执行相同的操作,但对象不同

找出承载Cargo 的最小成本

如何使用jooq更新记录?

在单例类上获取Java锁,了解原因

我无法在我的Spring Boot应用程序中导入CSV依赖项

窗口启动后不久,从java.awt.Graphics disapear创建的矩形

OpenAPI Maven插件生成错误的Java接口名称

睡眠在 Spring Boot 中