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)分别扩展或实现另一个类或接口
//情况1
// OR case2
//因此,无论哪种情况,以下列方式创建类B的目的是什么
1)这个程序有什么名字吗?
2)什么(数据成员,方法,构造函数)将被加载到objectB中?
3)如果所有B类代码都将加载到objectB中,那么为什么我们要提供接口或父类的引用?
4)这表明多态吗?如果是,那为什么呢?
5)在case2中,类B也将继承myClassA的构造函数
6)为什么我们也创建了父类对象,为什么也称父类的构造函数
(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继承。
对于接口,数据成员为private
,static
,final
常量。它们必须在构造函数中初始化。该方法必须由B类实现。
如果是超类,则仅继承数据成员和方法。您可以覆盖方法。变量不是多态的。
3)如果将所有B类代码都加载到objectB中,为什么
我们是否提供接口或父类的引用?
我们提供接口或父类的引用,以便在有多个子类型的情况下,我们可以有一个接受超类型的方法,而不是创建多个方法。这减少了代码行,并使代码可读。
4)这表明多态吗?如果是,那为什么呢?
这显示了多态行为,因此您无需将每个子类型绑定到不同的方法。可以编写单个方法来动态绑定单个超类型的所有子类型。
5)在case2中,类B也将继承myClassA的构造函数
构造函数未继承。如果需要,必须显式调用super()。
6)为什么我们创建父类的构造函数也称为
子类对象
并非每次都要调用父类的构造函数。如果不需要,可以跳过它。但是作为一种标准做法,super()
是子类构造函数的第一行,因此,超类对象创建中的任何更改都不会影响子类。
关于java - 创建具有不同引用的对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38813016/