java 子类对象赋值给父类后如何调用子类方法
时间: 2023-06-01 14:05:58 浏览: 212
当一个子类对象赋值给父类引用时,只有父类中存在而子类未重写的方法才能被调用。如果想要调用子类中重写的方法,需要将父类引用强制转换为子类类型。例如,如果有一个子类SubClass,重写了父类ParentClass中的方法foo(),则可以使用如下代码调用这个子类方法:
ParentClass obj = new SubClass();
obj.foo(); // 调用ParentClass中的foo()方法
((SubClass) obj).foo(); // 调用SubClass中重写的foo()方法
相关问题
java将子类赋值给父类,对象究竟是父类还是子类
在Java中,将子类赋值给父类后,对象仍然是子类的对象,只是用父类的引用来引用它。这是因为子类继承了父类的所有属性和方法,子类对象可以调用父类中的所有方法和属性,同时还可以调用子类自己的方法和属性。但是,由于父类引用只能访问父类中的方法和属性,所以在使用父类引用访问子类对象时,只能访问从父类继承而来的方法和属性,而不能访问子类自己的方法和属性。如果需要访问子类自己的方法和属性,可以将父类引用强制转换为子类引用。
java 子类对象如何在父类调用父类方法 请举例
在Java中,子类对象可以像父类对象一样调用父类的方法。这是因为在Java里,子类继承了父类的所有属性和方法(除了私有和受保护的)。当你创建一个子类的对象,并将其赋值给父类类型的引用时,这个引用可以访问和调用父类公开(public、protected)的方法。
例如:
```java
// 定义一个父类 Animal
class Animal {
public void eat() {
System.out.println("Animal is eating");
}
}
// 子类 Dog 继承自 Animal
class Dog extends Animal {
// 可以添加子类特有的行为
public void bark() {
System.out.println("Dog is barking");
}
}
// 创建子类对象并赋值给父类引用
Dog myDog = new Dog();
myDog.eat(); // 这将执行父类 Animal 中的 eat 方法
// 调用子类特有的方法
myDog.bark(); // 尽管引用是 Animal 类型,但这里调用了 Dog 类的 bark 方法
```
在这个例子中,`myDog` 虽然被声明为 `Animal` 类型,但我们仍然可以在它上面调用 `eat()` 方法,这是因为 Java 的动态绑定(dynamic binding)机制会在运行时确定调用哪个版本的方法。如果需要调用子类特有的方法,直接通过子类引用即可。
阅读全文