java父类引用子类
时间: 2023-09-05 15:13:57 浏览: 142
在Java中,父类引用子类通常用于实现多态。这种技术可以让我们在不知道具体子类类型的情况下,使用父类引用来调用子类的方法和属性。
假设我们有一个Animal类,以及它的子类Dog和Cat。我们可以定义一个Animal类型的变量,然后将它引用一个Dog或者Cat类型的对象。这样,我们就可以使用Animal类型的变量来调用Dog或Cat类型的方法和属性,实现多态。
例如:
```
Animal animal = new Dog(); // 父类引用子类
animal.sound(); // 调用Dog类的sound()方法
```
这里,我们定义了一个Animal类型的变量animal,并且将它引用一个Dog类型的对象。然后,我们使用animal变量来调用Dog类的sound()方法,这就是多态的体现。
需要注意的是,父类引用子类时,只能使用子类和父类共有的方法和属性,如果子类有独有的方法或属性,那么父类引用是无法访问的。
相关问题
java父类调用子类
在 Java 中,父类不能直接调用子类的方法。但是,可以通过多态的方式实现子类的方法被调用。具体来说,可以定义一个父类的方法,该方法接收一个父类对象作为参数,并在方法体内调用该对象的方法。如果传入的对象是子类的实例,则子类方法会被调用。示例代码如下:
```java
class Animal {
public void makeSound() {
System.out.println("Animal is making a sound");
}
}
class Cat extends Animal {
public void makeSound() {
System.out.println("Meow!");
}
}
class Main {
public static void main(String[] args) {
Animal animal = new Cat();
animal.makeSound(); // 输出 "Meow!"
}
}
```
在上面的代码中,定义了一个 Animal 父类和一个 Cat 子类。Animal 类中定义了 makeSound 方法,该方法输出 "Animal is making a sound"。Cat 类继承了 Animal 类,并重写了 makeSound 方法,使其输出 "Meow!"。在主函数中,创建了一个 Cat 对象,并将其赋给了 Animal 类型的变量 animal。然后调用了 animal 的 makeSound 方法,由于 animal 实际上是 Cat 类型的对象,因此 Cat 类的 makeSound 方法被调用,输出 "Meow!"。
j ava父类与子类例子
好的,下面是一个简单的 Java 父类与子类的例子:
```java
// 定义一个 Animal 类作为父类
class Animal {
public void makeSound() {
System.out.println("动物发出声音");
}
}
// 定义一个 Dog 类作为 Animal 类的子类
class Dog extends Animal {
public void makeSound() {
System.out.println("狗发出汪汪声");
}
}
// 测试
public class Test {
public static void main(String[] args) {
Animal animal = new Animal(); // 创建一个 Animal 类的对象
animal.makeSound(); // 输出: 动物发出声音
Dog dog = new Dog(); // 创建一个 Dog 类的对象
dog.makeSound(); // 输出: 狗发出汪汪声
Animal animal2 = new Dog(); // 使用 Animal 类类型的变量来引用 Dog 类的对象
animal2.makeSound(); // 输出: 狗发出汪汪声
}
}
```
在这个例子中,`Animal` 类是一个父类,它有一个 `makeSound()` 方法来输出动物发出声音。`Dog` 类是 `Animal` 类的子类,它重写了 `makeSound()` 方法来输出狗发出汪汪声。
在测试中,我们创建了一个 `Animal` 类的对象并调用了它的 `makeSound()` 方法,输出了动物发出声音。然后,我们创建了一个 `Dog` 类的对象并调用了它的 `makeSound()` 方法,输出了狗发出汪汪声。最后,我们使用 `Animal` 类类型的变量来引用 `Dog` 类的对象,并调用了它的 `makeSound()` 方法,输出了狗发出汪汪声。这是因为,虽然 `animal2` 的数据类型是 `Animal`,但它实际上引用的是 `Dog` 类的对象,因此调用 `makeSound()` 方法时会调用 `Dog` 类中的方法。
阅读全文