class Parent
{
    def m1()
    {
        System.out.println("m1 method");
    }
}

abstract class Child extends Parent
{
    def m1()
}

上面的代码成功编译,我的问题是:

为什么Parent类允许Child类将m1()方法作为抽象方法?

我们将在哪里使用这种方案?

最佳答案

现在,您可能想创建父类的多个变体。现在,父班是一个具体的班,要做到这一点非常困难。因为您可以尝试将父级设为抽象,然后提供实现。但是,如果在大型代码库的多个位置使用了具体类,则别无选择,只能执行以下操作。

因此,策略是创建抽象子级,其过程如下

abstract class Child extends Parent
{
    def m1()
}

class SpecialChild extends Child {
    //.. some implementation of m1
}

现在我们仍然可以使用原始孩子
child = new SpecialChild();

希望这是有道理的。

关于scala - 为什么Parent类允许Child类将Child类的方法抽象为Child类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46410724/

10-16 05:21