如何强制子类在java中实现一些方法?

时间:2013-08-13 08:09:53

标签: java libgdx

我在libgdx框架中有Screen接口。

我创建了一个名为BaseLayout的子类,我在其中初始化了一些字段。

现在每个实际的屏幕,例如MenuScreen我扩展了这个BaseLayout类。

我想强制这些类,例如MenuScreen实现两种方法 void initData()void addButtonsToScreen()怎么做?

我在仅在基类show中实现的BaseLayout方法中调用这些方法。

3 个答案:

答案 0 :(得分:4)

  

我想强制这些类,例如MenuScreen实现两个方法void initData()和void addButtonsToScreen()。怎么做?

BaseLayout成为abtract class并制作initData()addButtonsToScreen()抽象方法。

示例

public abstract class BaseLayout extends Screen
{
     public void initData();
     public void addButtonsToScreen();
}

然后你只需要创建子类扩展并实现这些方法。

public class ConcreteLayout extends BaseLayout
{
     public void initData()
     {
         // Some code here.
     }

     public void addButtonsToScreen()
     {
         // Some code here.
     }
}

答案 1 :(得分:1)

请将这些方法声明为abstract

前:

abstract method是一个声明没有实现的方法(没有大括号,后跟分号),如下所示:

abstract void moveTo(double deltaX, double deltaY);

答案 2 :(得分:1)

有两种方法可以做到这一点:

1-将您的Baselayout班级宣布为abstract班级,并声明您要强制孩子methods强制classesabstract

2 - 其他方式可能是在BaseLayout Class中定义一个定义两种方法的界面,然后在Interface类中实现Child