【发布时间】:2018-06-29 09:22:32
【问题描述】:
如果基类和子类实现了相同的接口,而抽象方法的方法实现在基类中提供,那么我们是否也必须在子类中提供实现?
【问题讨论】:
-
你自己试试吧
标签: java interface polymorphism abstract object-oriented-analysis
如果基类和子类实现了相同的接口,而抽象方法的方法实现在基类中提供,那么我们是否也必须在子类中提供实现?
【问题讨论】:
标签: java interface polymorphism abstract object-oriented-analysis
是的,你可以,当你有初始化范例时,子类的实现就会执行
BaseClass v = new SubClass();
这是很正常的多态性/过度验证。
【讨论】:
不应该是必需的,因为子类已经在基类中实现了方法
【讨论】:
我们是否也必须在子类中提供实现
不,您不必必须这样做。如果一个类extends 另一个,它已经在父类中声明了所有(public 和protected)方法。
但您可以提供此方法的不同实现。在这种情况下,父类中的方法将被覆盖。
【讨论】:
不需要在父类和子类中实现相同的接口,因为如果您在父类中实现它,那么子类也将具有相同的方法,但如果您想覆盖,您可以覆盖它。
public interface Shape {
void draw();
}
class Parallelogram implements Shape {
public void draw() {
System.out.println("This is Parallelogram");
}
}
public class Square extends Parallelogram {
@Override
public void draw() {
System.out.println("This Parallelogram is Square");
}
public static void main(String args[0]) {
Square square = new Square();
square.draw();
}
}
//输出 这个平行四边形是正方形
public class Rhombus extends Parallelogram {
public static void main(String args[0]) {
Rhombus rhombus = new Rhombus();
rhombus.draw();
}
}
//输出 这是平行四边形
【讨论】: