父类生成子类的事例可以调子类的方法吗
时间: 2023-08-14 19:02:21 浏览: 78
如果是通过父类生成子类的实例对象,那么可以调用子类中定义的方法,但是不能调用子类重写的父类方法。假设有一个父类 Parent 和一个子类 Child,Child 重写了 Parent 中的某个方法,那么可以通过以下方式生成子类的实例对象并调用子类的方法:
```
Parent obj = new Child(); // 创建子类对象并将其赋值给父类引用
obj.method(); // 调用子类的方法
```
在这个例子中,即使子类重写了父类的方法,也会调用子类的方法而不是父类的方法。但是,如果想要调用子类重写的父类方法,需要先将子类对象转换为子类类型,然后再调用方法。例如:
```
Parent obj = new Child(); // 创建子类对象并将其赋值给父类引用
((Child) obj).parentMethod(); // 调用子类重写的父类方法
```
需要注意的是,如果父类生成的实例对象是父类类型,而非子类类型,那么无法调用子类中定义的方法。
相关问题
子类转为父类后调子类的私有方法
子类转为父类后,无法直接调用子类的私有方法,因为私有方法只有在子类内部才能被访问。即使将子类对象转换为父类对象,也只能访问到父类中的方法和属性。如果需要在父类中调用子类的方法,可以将该方法设计为受保护的(protected),这样子类和父类都可以访问该方法。但是,这仍然不是一个好的设计,因为父类不应该依赖于子类的实现细节。
阅读全文