Java 使用不同的构造函数实例化类
假设我有一个名为Java 使用不同的构造函数实例化类,java,object,constructor,Java,Object,Constructor,假设我有一个名为class1的类和一个扩展它的类class2。我想了解下一行在实例化类对象时的含义 class1 classObjectName=new class2() 我知道我使用的是class2的构造函数,但我的问题是,如果我使用这两个类中的任何一个类的方法,这一行如何影响方法的使用 也 class1 classObjectName=new class1() class1 classObjectName=new class2() 我的问题是在这两行之后创建了多少个实例,它是来自class1
class1
的类和一个扩展它的类class2
。我想了解下一行在实例化类对象时的含义
class1 classObjectName=new class2()代码>
我知道我使用的是class2
的构造函数,但我的问题是,如果我使用这两个类中的任何一个类的方法,这一行如何影响方法的使用
也
class1 classObjectName=new class1()代码>
class1 classObjectName=new class2()代码>
我的问题是在这两行之后创建了多少个实例,它是来自class1还是class2
谢谢我举了一个例子,展示了一些行为。当指定为父实例时,子实例将失去对其特定于子实例的方法和数据的访问权,但会保留数据。这意味着,如果您将其投射回子对象,它将再次作为子对象使用
主要内容:
家长:
public class ClassParent
{
}
儿童:
public class ClassChild extends ClassParent
{
public String childValue;
public ClassChild(String value)
{
childValue = value;
}
public void ChildMethod()
{
}
}
只是吹毛求疵:Java命名约定有以大写字母(Class1)开头的类。如果您实例化ClassChild并将其分配给ClassParent的变量,它将生成ClassParent类型的变量。这意味着在ClassChild中声明的任何方法都将不可用,因为编译器将其视为ClassParent类型。因此,如果我正确获得它,我已经实例化了2个对象class1
和class2
,对吗class1
是class1
的一种,而class2
是class
的一种,非常感谢您的详细说明。至于我的另一个问题,我将从你的例子中学习。ClassParent=newclasschild(“Child”)代码>在那一行中,实例是来自ClassChild还是ClassParent?@AmrMahmoud它仍然是ClassChild的实例,但被编译器视为ClassParent。这就是为什么它在尝试访问ClassChild方法/数据时抛出错误,但仍然保留该数据,从而允许将其强制转换回ClassChild。这也是为什么您可以使用运算符将其标识为实际的ClassChild。@AmrMahmoud我在Main方法中添加了一行,以说明我使用instanceof
确认它仍然是ClassChild的实例的意思。非常感谢您的帮助。备受赞赏的人
public class ClassChild extends ClassParent
{
public String childValue;
public ClassChild(String value)
{
childValue = value;
}
public void ChildMethod()
{
}
}