java 如何调用子类方法
在Java中调用子类方法,需要根据具体场景选择合适的方式。以下是常见的几种方法:
通过子类实例直接调用
创建子类的实例后,可以直接调用子类特有的方法。这种方式适用于明确知道需要操作子类对象的情况。

SubClass sub = new SubClass();
sub.subClassMethod();
通过父类引用调用(需向下转型)
如果持有父类引用但实际指向子类对象,可以通过向下转型(强制类型转换)来调用子类方法。转型前建议使用instanceof进行检查以避免ClassCastException。
ParentClass obj = new SubClass();
if (obj instanceof SubClass) {
((SubClass) obj).subClassMethod();
}
通过方法重写实现多态
在父类中定义抽象方法或普通方法,子类重写该方法后,通过父类引用调用时会自动执行子类实现。这是多态的典型应用。

class Parent {
void method() { System.out.println("Parent"); }
}
class Child extends Parent {
@Override
void method() { System.out.println("Child"); }
}
Parent obj = new Child();
obj.method(); // 输出"Child"
通过反射机制调用
利用Java反射API可以在运行时动态获取并调用子类方法,适用于不确定具体子类类型的场景。
Class<?> clazz = Class.forName("com.example.SubClass");
Method method = clazz.getDeclaredMethod("subClassMethod");
Object instance = clazz.newInstance();
method.invoke(instance);
注意事项
直接调用子类方法时需确保代码设计符合里氏替换原则,避免过度依赖具体子类实现。多态和接口设计通常能提供更灵活的架构。
向下转型存在风险,应始终配合类型检查。反射会带来性能开销并绕过编译期检查,仅在必要时使用。






