Java面向对象程序设计:抽象类,接口用法实例分析
什么是抽象类?
抽象类是指不能被实例化的类,它只能被用作其他类的父类。抽象类通常用于定义一组相关的子类所需的方法和常量。
在Java中,可以通过在类的声明前加上abstract
关键字来定义一个抽象类,抽象类中可以包含抽象方法和非抽象方法。
抽象方法是指没有实现体的方法,它只有定义(方法名、返回类型、参数列表)而没有具体的实现。声明抽象方法的方式是在方法前面加上abstract
关键字,并且不需要方法体。
什么是接口?
接口是指一组方法的集合,它们共同定义了一些类需要遵循的标准。实现接口的类必须实现接口中声明的所有方法。
在Java中,可以通过在类的声明前加上interface
关键字来定义一个接口,接口中只能包含抽象方法和常量,不能包含实例变量和非抽象方法。
实现接口的方式是在类的声明中使用implements
关键字,实现接口的类必须实现接口中声明的所有抽象方法。
抽象类和接口的区别
虽然抽象类和接口都用于定义标准,但它们有一些区别:
- 抽象类可以包含非抽象方法和实例变量,而接口只能包含抽象方法和常量。
- 类只能继承一个抽象类,但可以实现多个接口。
3.抽象类可以有构造方法,而接口不能有构造方法。
实例演示一:抽象类
abstract class Shape {
double area;
abstract void calcArea();
}
class Circle extends Shape {
int radius;
Circle(int radius) {
this.radius = radius;
}
void calcArea() {
area = 3.14 * radius * radius;
}
}
class Triangle extends Shape {
int base, height;
Triangle(int base, int height) {
this.base = base;
this.height = height;
}
void calcArea() {
area = 0.5 * base * height;
}
}
public class Main {
public static void main(String[] args) {
Circle circle = new Circle(5);
Triangle triangle = new Triangle(10, 8);
circle.calcArea();
triangle.calcArea();
System.out.println("圆的面积:" + circle.area);
System.out.println("三角形的面积:" + triangle.area);
}
}
在上面的示例中,Shape
是抽象类,它定义了一个抽象方法calcArea()
和一个实例变量area
。Circle
和Triangle
都是Shape
的子类,它们分别实现了calcArea()
方法来计算自己的面积。
实例演示二:接口
interface Flyable {
void fly();
}
class Bird implements Flyable {
public void fly() {
System.out.println("鸟在飞");
}
}
class Airplane implements Flyable {
public void fly() {
System.out.println("飞机在飞");
}
}
public class Main {
public static void main(String[] args) {
Bird bird = new Bird();
Airplane airplane = new Airplane();
bird.fly();
airplane.fly();
}
}
在上面的示例中,Flyable
是接口,它定义了一个抽象方法fly()
,Bird
和Airplane
都实现了Flyable
接口,它们分别实现了自己的fly()
方法。在Main
方法中,我们创建了一个Bird
对象和一个Airplane
对象,并调用它们的fly()
方法。
总结
抽象类和接口都是用来定义标准的,它们都可以用来实现多态性,但具体的适用场景不同。在实际应用中,需要根据具体需求选择使用哪种方式来定义标准。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java面向对象程序设计:抽象类,接口用法实例分析 - Python技术站