JAVA 父类接受子类对象
时间: 2023-07-01 19:14:41 浏览: 143
在 Java 中,可以使用多态的特性,使得父类类型的变量可以接受子类对象。
例如,假设有一个 Animal 类作为父类,有一个 Dog 类作为子类,那么可以这样声明一个 Animal 类型的变量:
```
Animal animal = new Dog();
```
这样,animal 变量就可以接受 Dog 类型的对象,也可以调用 Dog 类型对象中的方法。这就是Java中的多态特性。
相关问题
JAVA 父类接受子类对象,可以调用子类有而父类中没有的对象吗?
当父类接收子类对象时,只能调用在父类中定义的方法和属性。如果子类中有而父类中没有的方法和属性,父类是无法直接调用的。
但是,可以通过将父类类型的变量强制类型转换为子类类型,从而调用子类中特有的方法和属性。例如:
```
Animal animal = new Dog();
if (animal instanceof Dog) {
Dog dog = (Dog) animal;
dog.bark(); // 调用子类Dog中的bark方法
}
```
这里首先将 Animal 类型的 animal 变量强制转换为 Dog 类型,然后就可以调用 Dog 中特有的方法 bark() 了。但是需要注意的是,如果 animal 引用的对象实际不是 Dog 类型的对象,那么强制转换会导致运行时异常。因此,在进行强制类型转换时,需要使用 instanceof 运算符进行类型检查,以确保安全转换。
java父类调用子类
在Java中,如果一个父类引用指向了其子类的对象,这种现象被称为向上转型(Upcasting)。父类能够调用子类的方法和访问子类的成员变量,这是基于Java的多态机制。例如:
```java
// 定义一个父类 Animal
class Animal {
public void makeSound() {
System.out.println("动物发出声音");
}
}
// 子类Dog 继承自 Animal
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("狗汪汪叫");
}
}
// 创建并赋值子类对象给父类引用
Animal animal = new Dog(); // 向上转型
// 父类引用可以调用子类的方法
animal.makeSound(); // 输出 "狗汪汪叫"
```
在这个例子中,虽然`animal`是一个`Animal`类型的引用,但它实际上指向的是`Dog`对象。因此,当我们通过这个引用调用`makeSound()`方法时,会执行`Dog`类的实现,这就是多态的一个体现。
阅读全文