public class Home {
public void getHomeDetails(){
Rooms r = new Rooms();
r.getRooms();
}
public class Rooms{
public void getRooms(){
System.out.println("20");
}
}
}
public class BigHome extends Home{
public class Inner extends Home.Rooms{
public void getRooms(){
System.out.println("100");
}
}
}
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
BigHome bigHome = new BigHome();
bigHome.getHomeDetails(); // output:20 (Expecting 100)
}
}
我有一个家庭教室,其内部教室房间可打印20。
另一个名为BigHome的类扩展了Home及其内部类。
但是当我在Main Class中启动BigHome时。我的输出为20(我原本希望为100)
如何调用BigHome类的getRoom函数?
最佳答案
BigHome没有bigHome.getHomeDetails();。方法,因此它使用使用家庭房间的Home类中的方法。您可以做的是设置2个类的构造函数,然后在这些构造函数中,设置要使用的Room类。喜欢:
public class Home
{
Rooms r;
public Home()
{
r = new Rooms();
}
public void getHomeDetails()
{
r.getRooms();
}
public class Rooms
{
public void getRooms()
{
System.out.println("20");
}
}
}
class BigHome extends Home
{
public BigHome()
{
r = new Inner();
}
public class Inner extends Home.Rooms
{
public void getRooms()
{
System.out.println("100");
}
}
}
现在,Home和BigHome都负责指定他们要使用的房间。
摆脱继承的整个概念的另一种方法是,重写BigHome类中的getHomeDetails方法以设置BigHome正在使用的房间。
public void getHomeDetails()
{
Inner.Rooms r = new Inner.Rooms();
r.getRooms();
}
我不建议这样做。