如B类继承了A类,A类中有一个方法methodA,然后我在B类里边可以调用A类的这个methodA吗?怎么才能被调用?
1 个回答
做自己,而不是解释自己。王玄可以的,只要 **`methodA` 在 A 类中不是 `private`**,B 类就能直接调用它,而且有几种调用方式。 ## 1. 条件 * **访问修饰符不是 `private`** * `public` → 任何地方都能调用。 * `protected` → 子类和同包类能调用。 * 默认(包访问)→ 同一个包内的子类才能调用。 * B 继承 A 后,会直接继承 `methodA` 方法(除非被重写)。 ## 2. 调用方式 ### 方式 1:直接调用(继承来的方法) ```java class A { public void methodA() { System.out.println("A 的 methodA"); } } class B extends A { public void test() { methodA(); // 直接调用继承的方法 } } B b = new B(); b.test(); // 输出:A 的 methodA ``` ### 方式 2:`super` 调用(明确调用父类实现) ```java class A { public void methodA() { System.out.println("A 的 methodA"); } } class B extends A { @Override public void methodA() { System.out.println("B 的 methodA"); } public void test() { super.methodA(); // 调用 A 类版本 } } B b = new B(); b.test(); // 输出:A 的 methodA ``` > 当 B **重写了** `methodA`,用 `super.methodA()` 可以调用到父类的原实现。 ### 方式 3:通过实例调用 ```java B b = new B(); b.methodA(); // 调用继承自 A 的方法 ``` 如果 `B` 重写了 `methodA`,那么这里会执行 B 的版本(运行时多态)。 ## 3. 总结 * 不 `private` 的父类方法,子类都能调用。 * 没有被重写时,直接调用就是父类的实现。 * 被重写时: * `super.methodA()` 调父类实现; * `methodA()` 调子类自己的实现(多态)。发布于 2025-08-11 20:33 •IP属地 山西举报评论收藏
公众号进入网站体验更佳

