我们可以使用另一个类的构造函数来初始化一个对象吗?
class1 object = new class2();
class2
扩展(或在接口的情况下实现)了 class1
就可以了。例如:List<String> list = new ArrayList<>();
明确一下,你正在创建一个 class2
的实例(或我的示例中的 ArrayList
)。恰好你已经声明了变量的类型为 class1
(或 List
)。class1 object1 = new class2();
class2*
和 class1
之间的构造函数将会很方便。可以通过转换构造函数来实现:struct class1
{
class1(const class2*);
};
class1 object1 = class2();
如果要进行转换构造函数,则需要通过值或引用方式使用class2
。例如:
struct class1
{
class1(const class2&);
};
类型之间不需要存在is-a关系。
仅就C++而言:这是可能的,但是类需要具有多态的“is a”关系(在C++中为公共继承)。例如:
class class1 { };
class class2 : public class1
{
class2(int) {}
};
class1* object1 = new class2(42); // A pointer is needed (in C++)
delete object1;
// better would be:
std::unique_ptr<class1> object1(new class2(42));
编辑: 与此同时,楼主删除了C++标签,因此我的答案不再相关。
class Class1{
/*
*
*
body of class1
*
*/
}
class Class2 extends Class1{
/*
*
*
body of class2
*
*/
}
然后你可以声明:
Class1 object1 = new Class2();
希望这有所帮助。
class class1{}
class class2 extends class1{}
class1 object1 = new class2();
是有效的。实际上,在内部发生的是你拥有一个class2对象,但它被一个class1变量引用。class class1{}
class class2{}
那么这个不起作用