子类未继承超类方法异常咨询:抽象类Loja子类问题排查
嘿,我来帮你排查下子类没继承Loja抽象类方法的问题!结合你给出的Loja代码片段,我整理了几个最常见的原因和解决思路:
方法访问修饰符不对:你
Loja里的字段都是private的,但如果父类的方法也是private修饰,那子类是完全继承不到这些方法的。比如如果Loja里有个private void calculaRenda(),子类根本看不到这个方法。解决办法是把需要子类继承的方法改成protected(仅限子类和同包访问)或者public(外部也能访问),比如给area写个公共的getter:public double getArea() { return area; }这样子类就能正常调用
getArea()了。抽象方法未正确实现:既然
Loja是抽象类,如果你在里面定义了抽象方法(比如public abstract void exibeInformacoes();),那所有子类必须强制实现这个方法,否则编译会报错。有时候你可能误以为是“没继承”,其实是没实现抽象方法导致的问题,记得在子类里用@Override注解来实现。子类继承语法写错了:检查一下子类的定义是不是漏了
extends Loja?比如正确的子类写法应该是:public class LojaOnline extends Loja { // 类逻辑 }如果没写
extends Loja,那这个类和Loja半毛钱关系都没有,自然拿不到父类的方法。混淆了static方法的“继承”概念:
Loja里有个静态字段rendaFixa,静态方法属于类本身,不是实例方法的继承范畴。子类可以直接调用Loja.rendaFixa或者子类名来访问,但不能像实例方法那样通过子类对象继承调用(严格来说static方法不参与继承机制)。
如果还是找不到问题,建议把子类的代码贴出来,这样能更精准地定位问题~
内容的提问来源于stack exchange,提问作者skidils

