如果我们的类已经扩展了其他类,如何在我们的类中实现抽象类的方法

时间:2017-02-09 06:09:33

标签: java android

在Android中,MainActivity已经extends Activity

现在我想使用abstract classCountdownTimer

我怎么能这样做,因为MainActivity已经扩展了一个类,它不能扩展另一个类。

4 个答案:

答案 0 :(得分:1)

您应该使用接口来代替抽象类,因为您可以实现多个接口,甚至可以实现多个接口并扩展类。

唯一需要注意的是接口必须只有抽象方法。

答案 1 :(得分:1)

Composition over inheritance

简短的回答,你不需要扩展另一个类。

Android需要一个Activity才能显示界面。您的活动可以“撰写”CountDownTimer

public class MainActivity extends AppCompatActivity {
    private CountDownTimer timer;

    @Override
    protected void onCreate(Bundle b) {
        super.onCreate(b);
        setContentView(R.layout.activity_main);

        timer = new CountDownTimer(...);
    }
}

答案 2 :(得分:0)

Java中不允许多重继承。所以从字面上看,你只能扩展一个类。考虑将您的抽象类更改为接口,因为您可以实现多个接口。

答案 3 :(得分:0)

在Java中,不允许多重继承。它被排除在语言之外作为设计决策,主要是为了避免循环依赖

场景1:如您所知,Java中无法实现以下功能:

public class Dog extends Animal, Canine{

}

场景2:但是以下是可能的:

public class Canine extends Animal{

}

public class Dog extends Canine{

}

这两种方法的区别在于

第二种方法是明确定义的父类或超类,

虽然在第一种方法中,超类是模棱两可的。

考虑Animal和Canine是否都有方法drink().

  • 在第一个场景下,如果我们调用父方法 叫Dog.drink()?

  • 在第二种情况下,我们知道调用Dog.drink()会调用 只要Dog没有覆盖它,犬类饮用方法