gpt4 book ai didi

java - 多态性适用于值对象吗?

转载 作者:行者123 更新时间:2023-12-02 02:52:08 25 4
gpt4 key购买 nike

考虑这样一种情况:父类只有属性并且“没有方法”,并且多个子类正在扩展父类以实现代码可重用性。

这些对象本质上是值对象,如果在接受父变量作为输入的方法中传递子值对象,当子对象没有可重写的行为时,您还会将其称为多态行为吗?例如:

class Parent { int value = 100; /* doesn't have any method to be overriden */ }

class Child1 extends Parent {};

class Child2 extends Parent {};

public class Test {

public static void main(String[] args) {
Parent obj1 = new Child1();
doSomething(obj1);

Parent obj2 = new Child2();
doSomething(obj2);

Child1 obj3 = new Child1();
doSomething(obj3);

Child2 obj4 = new Child2();
doSomething(obj4);
}

static void doSomething(Parent p) {
// some code
}
}

即使根本没有行为,您仍然会调用上面的多态行为吗?

最佳答案

你的意思是这样吗?

class A { int foobar = 42; }
class B extends A {}

public class Test3 {
public static void printAsFoobarValue(A a) { System.out.println(a.foobar); }
public static void printBsFoobarValue(B b) { System.out.println(b.foobar); }

public static void main(String[ ] args) throws Exception {
A a = new A();
B b = new B();
A c = new B();
printAsFoobarValue(a);
printAsFoobarValue(b);
printAsFoobarValue(c);
printBsFoobarValue(b);
}
}

我将其称为多晶型。

关于java - 多态性适用于值对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43651600/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com