2014-06-16 105 views
0

我想尝试实例化一个Child对象,它使用先前实例化的父对象的属性扩展了Parent。所以像这样:从超类Java实例化子类Java

class Parent { 
    ClassName property1; 

    // Setters and getters 
} 

class Child extends Parent { 
    public Child(Parent parent) { 
     this.property1 = parent.getProperty1(); 
     // + other properties 
    } 
} 

Parent parent = new Parent(); 
parent.setProperty1(prop); 

Child object = (Child)parent; // Casting exception 
Child object2 = new Child(parent); // This is not ideal 

是否有任何其他方式来实现这一目标?

+0

听起来像生成器模式可能是使用的... – awksp

+0

我认为你不能将其向下转换子 –

+1

为什么你会做这个.property1 = parent.getProperty1();?如果你创建了一个孩子,并且你的父母有一个公共方法,那么你可以通过孩子访问你父母的所有属性(因为孩子*是一个父母) – Pphoenix

回答

1

首先查找多态性。看起来你并不熟悉OOP语言的一个主要特性。

其次,您需要实例你的父母喜欢这个

Parent p = new Child();

Child c = (Child) p;

+0

这是真的。我对OOP的所有功能都不是很有经验,因为我主要使用继承来解决我的问题。我现在正在对多态性进行一些研究。对于noob问题抱歉。 –

+0

没问题,只是尝试通过一个教程(在互联网上有无数的教程),然后希望你会明白你可以用OOP语言做什么。 ;-) – einschnaehkeee

+0

对,我已经阅读了一些关于接口的内容,虽然我用另一种方式解决了我的问题,但对于所问的问题,这种回应是完全正确的。谢谢您的帮助 –