【问题标题】:Interface implementation by both parent and sub class in javajava中父类和子类的接口实现
【发布时间】:2018-06-29 09:22:32
【问题描述】:

如果基类和子类实现了相同的接口,而抽象方法的方法实现在基类中提供,那么我们是否也必须在子类中提供实现?

【问题讨论】:

  • 你自己试试吧

标签: java interface polymorphism abstract object-oriented-analysis


【解决方案1】:

是的,你可以,当你有初始化范例时,子类的实现就会执行

BaseClass v = new SubClass();

这是很正常的多态性/过度验证。

相关:Can an interface extend multiple interfaces in Java?

【讨论】:

  • 如果父类中被覆盖的方法是私有的怎么办?
  • 如果您尝试设为私有,您会看到编译器错误,因为您正在降低方法的可见性。
【解决方案2】:

不应该是必需的,因为子类已经在基类中实现了方法

【讨论】:

  • 如果子类对同一个有不同的实现怎么办?
  • 那么你也可以在子类中重写该方法
【解决方案3】:

我们是否也必须在子类中提供实现

不,您不必必须这样做。如果一个类extends 另一个,它已经在父类中声明了所有(publicprotected)方法。

但您可以提供此方法的不同实现。在这种情况下,父类中的方法将被覆盖。

【讨论】:

    【解决方案4】:

    不需要在父类和子类中实现相同的接口,因为如果您在父类中实现它,那么子类也将具有相同的方法,但如果您想覆盖,您可以覆盖它。

    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();
        }
    }
    

    //输出 这是平行四边形

    【讨论】:

      猜你喜欢
      • 2017-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-05
      • 2016-09-30
      • 1970-01-01
      相关资源
      最近更新 更多