This question already has answers here:
Why do we assign a parent reference to the child object in Java?

(10个答案)



What does it mean to “program to an interface”?

(32个答案)


3年前关闭。




我对这个话题很困惑。
//一个类(让我们说B)分别扩展或实现另一个类或接口

interface myInterfaceA{

int interfaceDataMember1;
int interfaceDataMember2;

void interfaceMethod1();
void interfaceMethod2();

}

class myClassA{

int parentClassDataMember1;
int parentClassDataMember2;

myclassA(){}

void parentClassMethod1(){}
void parentClassMethod2(){}

}


//情况1

class B implements myInterfaceA{

int dataMember1;
int dataMember2;

B(){}

void method1(){}
void method2(){}
}


// OR case2

class B extends myClassA{

int dataMember1;
int dataMember2;

B(){}

void method1(){}
void method2(){}
}


//因此,无论哪种情况,以下列方式创建类B的目的是什么

myInterfaceA objectB = new B();
// or
myClassA objectB = new B();


1)这个程序有什么名字吗?
2)什么(数据成员,方法,构造函数)将被加载到objectB中?
3)如果所有B类代码都将加载到objectB中,那么为什么我们要提供接口或父类的引用?
4)这表明多态吗?如果是,那为什么呢?
5)在case2中,类B也将继承myClassA的构造函数
6)为什么我们也创建了父类对象,为什么也称父类的构造函数

最佳答案

1)这个程序有什么名字吗?


这是多态性。


2)将会加载什么(数据成员,方法,构造函数)
objectB?


每个数据成员和方法都将由objectB继承。

对于接口,数据成员为privatestaticfinal常量。它们必须在构造函数中初始化。该方法必须由B类实现。

如果是超类,则仅继承数据成员和方法。您可以覆盖方法。变量不是多态的。


3)如果将所有B类代码都加载到objectB中,为什么
我们是否提供接口或父类的引用?


我们提供接口或父类的引用,以便在有多个子类型的情况下,我们可以有一个接受超类型的方法,而不是创建多个方法。这减少了代码行,并使代码可读。


4)这表明多态吗?如果是,那为什么呢?


这显示了多态行为,因此您无需将每个子类型绑定到不同的方法。可以编写单个方法来动态绑定单个超类型的所有子类型。


5)在case2中,类B也将继承myClassA的构造函数


构造函数未继承。如果需要,必须显式调用super()。


6)为什么我们创建父类的构造函数也称为
子类对象


并非每次都要调用父类的构造函数。如果不需要,可以跳过它。但是作为一种标准做法,super()是子类构造函数的第一行,因此,超类对象创建中的任何更改都不会影响子类。

关于java - 创建具有不同引用的对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38813016/

10-11 17:31
查看更多