类到子类上的点的指针(多态性)



假设 A 是 B 和 C 的超值。 B 是 D 和 E 的超类, C 是 F 和 G 的超类。 (G 和 F 扩展 C,E 和 D 扩展 B,C 和 B 扩展 A(

我有一个 A 型数组,我希望它随机选择(假设 50/50 机会( 在类 B 或 C 之间,以及 B 类或 C 类之间,随机指向类 D 或 E 和 F 或 G 的对象。 所以最终我可以在 A 类型的数组上执行函数(A 将指向 D、E、F 或 G(

我可以通过在 B 或 C 的承包商内部(随机(创建一个对象来做到这一点吗?

我想你想做这样的事情:

class A
{
int value;
A(int val)
{
value =val;
}
public void print()
{
System.out.println("value in A ="+value);
}
}
class B extends A
{   
B(int val)
{
super(val);     
}
public void print()
{
System.out.println("value in B = "+value);
}
}
class C extends A
{
C(int val)
{
super(val);     
}
public void print()
{
System.out.println("value in C = "+value);
}
}
class D extends B
{
D(int val)
{
super(val);     
}
public void print()
{
System.out.println("value in D = "+value);
}
}
class E extends B
{
E(int val)
{
super(val);     
}
public void print()
{
System.out.println("value in E = "+value);
}
}
class F extends C
{
F(int val)
{
super(val);     
}
public void print()
{
System.out.println("value in F = "+value);
}
}
class G extends C
{
G(int val)
{
super(val);     
}
public void print()
{
System.out.println("value in G = "+value);
}
}
public class Polymorphism 
{
public static void main(String[] args)
{
A[] array = new A[7];
//array of type A used to hold objects of all other classes which extend A           
array[0] = new A(123);//holds object of type A
array[1] = new B(321);//holds object of type B
array[2] = new C(111);
array[3] = new D(13);
array[4] = new E(1248);
array[5] = new F(165);
array[6] = new G(191);//holds object of type G
for( A a: array)
a.print();//using reference of type A to invoke overridden functions from individual classes!! 
}
}

最新更新