为什么父类允许Child类在Child类中将父类的方法设置为抽象类?

问题描述:

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

abstract class Child extends Parent 
{ 
    def m1() 
} 

上面的代码编译成功地,我的问题是:为什么父类允许Child类在Child类中将父类的方法设置为抽象类?

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

我们在哪里使用这种场景?

+0

让抽象类扩展一个具体类很奇怪。这是可能做到的其中一种情况,但你可能不应该这样做。 – puhlen

现在,它可以发生,你想创建父类的多个变体。现在,父类是一个具体的类,它很难实现这一点。因为您可以尝试将父项作为抽象,然后提供实现。但是如果在你的大代码库的几个地方使用了具体的类,那么你别无选择,只能按照以下步骤行事。

因此,策略是创建抽象子不言而喻如下

abstract class Child extends Parent 
{ 
    def m1() 
} 

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

现在我们仍然可以使用原来的孩子

child = new SpecialChild(); 

希望这是有道理的。