从超类Java实例化子类

从超类Java实例化子类,java,inheritance,Java,Inheritance,我想尝试实例化一个子对象,该子对象使用先前实例化的父对象的属性扩展父对象。比如说: class Parent { ClassName property1; // Setters and getters } class Child extends Parent { public Child(Parent parent) { this.property1 = parent.getProperty1(); // + other propert

我想尝试实例化一个子对象,该子对象使用先前实例化的父对象的属性扩展父对象。比如说:

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

有没有其他方法可以实现这一点?

首先查找多态性。您似乎不熟悉OOP语言的主要功能之一

第二,你需要像这样实例化你的父母

Parent p=new Child()


Child c=(Child)p

听起来生成器模式可能有用……我认为您不能将其向下转换为child为什么要这样做。property1=parent.getProperty1();?如果您创建了一个子并且您的父方法中有一个公共方法,您可以通过该子访问所有的父属性(因为该子是A父),为什么您认为子对象2=新的子(父)< /代码>不理想?你有充分的理由让父对象先于子对象存在吗?@Pphoenix:当然,你可以动态复制属性,这是有原因的。然而,在这种情况下,这是过度杀伤力,就像在街头打架时带着一颗中子弹……这是真的。我对所有OOP特性都不是很有经验,因为我主要使用继承来解决我的问题。我现在正在做一些关于多态性的研究。对不起,没有问题。没问题,只要试着通过一个教程(在互联网上可以找到无限多的教程),然后希望你能理解使用OOP语言可以做什么。;-)是的,我读过一些关于接口的书,虽然我用另一种方式解决了我的问题,但是这个回答对于所问的问题是完全正确的。谢谢你的帮助