java多态练习题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

java多态练习题
Java多态练习题
Java是一种面向对象的编程语言,其中的多态性是其最重要的特性之一。

通过多态,我们可以实现代码的灵活性和可扩展性。

在这篇文章中,我们将通过一些练习题来加深对Java多态性的理解。

练习一:动物的多态
假设有一个动物类Animal,它有一个方法叫做makeSound(),用于输出动物的叫声。

现在我们派生出了两个子类Dog和Cat,它们分别重写了makeSound()方法,分别输出"汪汪汪"和"喵喵喵"。

现在我们创建一个Animal类型的数组,数组中存放了不同的动物对象,包括Dog和Cat。

我们遍历数组,调用每个动物对象的makeSound()方法,观察输出结果。

代码示例:
```java
class Animal {
public void makeSound() {
System.out.println("动物发出叫声");
}
}
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("汪汪汪");
}
}
class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("喵喵喵");
}
}
public class PolymorphismExample {
public static void main(String[] args) { Animal[] animals = new Animal[3]; animals[0] = new Dog();
animals[1] = new Cat();
animals[2] = new Dog();
for (Animal animal : animals) {
animal.makeSound();
}
}
}
```
运行结果:
```
汪汪汪
喵喵喵
汪汪汪
```
通过这个练习题,我们可以看到多态的作用。

尽管数组中存放的是Animal类型的对象,但是在运行时,根据实际对象的类型,调用的是相应子类的方法。

练习二:图形的多态
假设我们有一个图形类Shape,它有一个抽象方法叫做calculateArea(),用于计算图形的面积。

现在我们派生出了三个子类Circle、Rectangle和Triangle,它们分别重写了calculateArea()方法,分别计算圆形、矩形和三角形的面积。

现在我们创建一个Shape类型的数组,数组中存放了不同的图形对象,包括Circle、Rectangle和Triangle。

我们遍历数组,调用每个图形对象的calculateArea()方法,观察输出结果。

代码示例:
```java
abstract class Shape {
public abstract double calculateArea();
}
class Circle extends Shape {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
@Override
public double calculateArea() {
return Math.PI * radius * radius;
}
}
class Rectangle extends Shape {
private double width;
private double height;
public Rectangle(double width, double height) { this.width = width;
this.height = height;
}
@Override
public double calculateArea() {
return width * height;
}
}
class Triangle extends Shape {
private double base;
private double height;
public Triangle(double base, double height) {
this.base = base;
this.height = height;
}
@Override
public double calculateArea() {
return 0.5 * base * height;
}
}
public class PolymorphismExample {
public static void main(String[] args) {
Shape[] shapes = new Shape[3];
shapes[0] = new Circle(5.0);
shapes[1] = new Rectangle(3.0, 4.0);
shapes[2] = new Triangle(5.0, 6.0);
for (Shape shape : shapes) {
System.out.println("面积为:" + shape.calculateArea()); }
}
}
```
运行结果:
```
面积为:78.53981633974483
面积为:12.0
面积为:15.0
```
通过这个练习题,我们可以看到多态的另一个作用。

尽管数组中存放的是Shape类型的对象,但是在运行时,根据实际对象的类型,调用的是相应子类的方法。

这样我们可以通过统一的接口来处理不同类型的图形对象。

练习三:接口的多态
假设我们有一个接口Drawable,它有一个方法叫做draw(),用于绘制图形。

现在我们派生出了两个类Circle和Rectangle,它们实现了Drawable接口,并分别实现了draw()方法,分别输出"绘制圆形"和"绘制矩形"。

现在我们创建一个Drawable类型的数组,数组中存放了不同的图形对象,包括Circle和Rectangle。

我们遍历数组,调用每个图形对象的draw()方法,观察输出结果。

代码示例:
```java
interface Drawable {
void draw();
}
class Circle implements Drawable {
@Override
public void draw() {
System.out.println("绘制圆形");
}
}
class Rectangle implements Drawable {
@Override
public void draw() {
System.out.println("绘制矩形");
}
}
public class PolymorphismExample {
public static void main(String[] args) {
Drawable[] drawables = new Drawable[2]; drawables[0] = new Circle();
drawables[1] = new Rectangle();
for (Drawable drawable : drawables) {
drawable.draw();
}
}
}
```
运行结果:
```
绘制圆形
绘制矩形
```
通过这个练习题,我们可以看到多态的另一个应用。

尽管数组中存放的是Drawable类型的对象,但是在运行时,根据实际对象的类型,调用的是相应类的方法。

这样我们可以通过统一的接口来处理不同类型的图形对象。

总结:
通过以上的练习题,我们加深了对Java多态性的理解。

多态性使得我们的代码更加灵活和可扩展,可以通过统一的接口来处理不同类型的对象。

在实际开发中,多态性是一个非常重要的概念,掌握好多态性的使用可以提高代码的可维护性和可复用性。

希望通过这篇文章的练习题,读者对Java多态性有了更深入的理解。

相关文档
最新文档