java 子类继承abstract父类时编译器不通过,将子类声明为abstract类后通过但是Initail类(测试类)中无法引用

55e2848000012f4b03000116.jpg

这是abstract父类

55e284810001a21703320281.jpg

但是子类这样写编译器报错

55e2848100010f0105000084.jpg

错误如上图

55e28481000128e203980026.jpg

将子类声明abstract后通过了,但是测试类中无法引用:Shape sha1 = new Rectangle();报错。

求高手指教。


hunterter
浏览 1728回答 2
2回答

sunyx

报错很明显,Rectangle没有实现抽象类Shape中的方法,而是重载了_long 和square方法(对比shape和rectangle的两个方法的参数列表完全不同)。所以编译器告诉你,必须要实现抽象类中的方法。把抽象方法改成如下public abstract void Shape{     public abstract void _long(int a,int b);     public abstract void square(int a,int b); }

忘性最大的人

首先,抽象类不能被实例化;再者你的抽象类方法明明是不含参数的,你把@Override注释去掉之后相当于在子类中新建了一个方法,跟原先的抽象父类就没什么关系了,相当于没有用到抽象父类。(个人见解,恐有不足)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java