简述Java中抽象类和接口的区别(至少3个),并举例说明。
时间: 2024-01-03 16:09:47 浏览: 100
抽象类和接口是Java中两种重要的抽象概念,它们在实现面向对象编程的时候都有着重要的作用。它们的主要区别如下:
1.实现方式不同:抽象类是通过关键字abstract来定义的,而接口是通过关键字interface来定义的。
2.实现细节不同:抽象类可以包含构造方法、成员变量、普通方法和抽象方法,而接口只包含常量和抽象方法。
3.继承限制不同:一个类只能继承一个抽象类,而一个类可以实现多个接口。
举例说明:
1.抽象类的应用:假设有一个动物类Animal,它有一个抽象方法eat(),但是所有的动物都有呼吸和移动的能力,那么我们就可以在Animal类中定义一些普通方法来实现这些公共的功能。
```
public abstract class Animal {
public void breathe() {
System.out.println("动物都需要呼吸");
}
public void move() {
System.out.println("动物都可以移动");
}
public abstract void eat();
}
```
2.接口的应用:假设有一个图形类Shape,它可以被计算它的面积和周长,但是不同的图形计算面积和周长的方式不同,那么我们就可以定义一个计算面积和周长的接口来实现这个功能。
```
public interface Calculate {
public double getArea();
public double getPerimeter();
}
public class Rectangle implements Calculate {
private double length;
private double width;
public Rectangle(double length, double width) {
this.length = length;
this.width = width;
}
public double getArea() {
return length * width;
}
public double getPerimeter() {
return 2 * (length + width);
}
}
public class Circle implements Calculate {
private double radius;
private final double PI = 3.1415926;
public Circle(double radius) {
this.radius = radius;
}
public double getArea() {
return PI * radius * radius;
}
public double getPerimeter() {
return 2 * PI * radius;
}
}
```
阅读全文