如果只初始化了超类对象,是无法直接调用子类特定的方法的。这是因为超类对象只能访问和调用超类中定义的方法和属性,无法访问和调用子类中新增或重写的方法和属性。
然而,可以通过将超类对象向下转型为子类对象,从而获得对子类特定方法的访问权限。向下转型是指将一个父类类型的引用转换为子类类型的引用。在Java中,可以使用强制类型转换运算符(cast)来实现向下转型。
以下是一个示例代码,演示了如何通过向下转型调用子类特定的方法:
// 超类
class SuperClass {
public void superClassMethod() {
System.out.println("This is a method in the superclass.");
}
}
// 子类
class SubClass extends SuperClass {
public void subClassMethod() {
System.out.println("This is a method in the subclass.");
}
}
public class Main {
public static void main(String[] args) {
SuperClass superClassObj = new SuperClass();
superClassObj.superClassMethod(); // 可以调用超类方法
// 向下转型为子类对象
SubClass subClassObj = (SubClass) superClassObj;
subClassObj.subClassMethod(); // 可以调用子类方法
}
}
在上述代码中,我们首先创建了一个超类对象superClassObj
,然后尝试调用超类方法superClassMethod()
,这是可以成功的。接着,我们将超类对象向下转型为子类对象subClassObj
,然后调用子类方法subClassMethod()
,同样也可以成功调用。
需要注意的是,向下转型存在风险,如果超类对象并不是子类对象的实例,那么在运行时会抛出ClassCastException
异常。因此,在进行向下转型之前,最好先使用instanceof
运算符进行类型检查,确保对象的类型是安全的。
总结起来,只初始化了超类对象是无法直接调用子类特定的方法的,但可以通过向下转型将超类对象转换为子类对象,从而获得对子类特定方法的访问权限。
领取专属 10元无门槛券
手把手带您无忧上云