java类多态和抽象类
时间: 2024-10-07 20:08:04 浏览: 40
接口,多态,抽象类,final
Java类的多态性和抽象类是面向对象编程的重要特性。
**多态(Polymorphism)**:
在Java中,多态允许不同类型的对象对同一消息作出响应。它主要有两种形式:方法重载(Overloading)和方法覆盖(Overriding)。方法重载是指在同一类中有多个同名方法,但参数列表不同;方法覆盖则是指子类重写父类的方法,提供自己的实现。通过引用父类或接口类型的对象,可以调用其实现的具体方法,体现了“一种接口多种实现”的原则。
**抽象类(Abstract Class)**:
抽象类是一种特殊的类,它不能被实例化,主要用于定义一组共同的属性和行为。抽象类可以包含抽象方法(没有实现体的方法,仅声明了方法名和返回类型)以及非抽象方法。子类继承抽象类后,如果实现了所有的抽象方法,那么该子类就可以是具体的(non-abstract);如果没有实现所有抽象方法,则子类也需要变为抽象类。
使用场景示例:
```java
abstract class Animal { // 抽象类
abstract void sound(); // 抽象方法
}
class Dog extends Animal { // 具体子类
@Override
void sound() {
System.out.println("汪汪汪");
}
}
class Cat extends Animal {
@Override
void sound() {
System.out.println("喵喵喵");
}
}
Dog dog = new Dog();
Cat cat = new Cat();
dog.sound(); // 输出:汪汪汪
cat.sound(); // 输出:喵喵喵
```
在这个例子中,`Animal`是抽象类,`Dog`和`Cat`是它的子类并实现了`sound()`方法。通过`Animal`类型的引用,我们可以调用它们各自的`sound()`实现,展示了多态性。
阅读全文