You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Class A含3个方法、Class B含2个方法且继承Class A,如何通过Class B对象调用Class A方法?

如何通过子类B的对象调用父类A的方法?

在面向对象的继承体系中,子类B继承父类A后,默认会拥有父类的非私有方法,调用方式分以下几种情况:

1. 父类方法未被重写时直接调用

如果父类A的方法是public、protected,或者与子类B处于同一包下的默认权限(无修饰符),且子类没有重写该方法,直接通过B的对象调用即可:

// 父类A
class A {
    public void methodA1() {
        System.out.println("A的方法1");
    }
    protected void methodA2() {
        System.out.println("A的方法2");
    }
    void methodA3() { // 同包默认权限
        System.out.println("A的方法3");
    }
}

// 子类B
class B extends A {
    public void methodB1() {
        System.out.println("B的方法1");
    }
}

// 调用示例
public class Demo {
    public static void main(String[] args) {
        B bInstance = new B();
        bInstance.methodA1(); // 调用父类public方法
        bInstance.methodA2(); // 调用父类protected方法
        bInstance.methodA3(); // 同包下调用父类默认权限方法
    }
}

2. 父类方法被子类重写时调用父类版本

如果子类B重写了父类A的方法,想调用父类的原始版本,有两种方式:

  • 子类内部调用:使用super关键字直接指定调用父类的方法
  • 外部调用:通过反射机制调用父类的方法(仅在必要时使用,会破坏封装性)

子类内部用super调用示例:

class A {
    public void methodA1() {
        System.out.println("A的methodA1");
    }
}

class B extends A {
    @Override
    public void methodA1() {
        System.out.println("B重写的methodA1");
        super.methodA1(); // 调用父类的原始方法
    }
}

public class Demo {
    public static void main(String[] args) {
        B bInstance = new B();
        bInstance.methodA1(); // 先输出B的版本,再输出A的版本
    }
}

外部通过反射调用示例:

public class Demo {
    public static void main(String[] args) {
        B bInstance = new B();
        try {
            // 获取父类A的methodA1方法
            java.lang.reflect.Method parentMethod = A.class.getMethod("methodA1");
            parentMethod.invoke(bInstance); // 调用父类的原始方法
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

3. 注意访问权限限制

  • 如果父类A的方法是private,子类B无法继承该方法,也不能直接调用。只能通过父类提供的public/protected方法间接访问,或者通过反射(不推荐,违背封装原则)。

内容的提问来源于stack exchange,提问作者kinjal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 23:07:44