📅  最后修改于: 2023-12-03 14:42:43.226000             🧑  作者: Mango
Java中的抽象类和接口是面向对象编程的两个重要概念。它们都是用于定义规范,但在一些方面存在差异。本文将介绍Java中抽象类和接口的区别。
抽象类和接口都是用来定义规范,它们都不能被直接实例化。在Java中,只有实现了接口或继承了抽象类的子类才能被实例化。
abstract class Animal {
public Animal() {
// 抽象类可以有构造器
}
}
interface Mammal {
// 接口不能有构造器
}
abstract class Animal {
public void move() {
System.out.println("动物移动!");
}
public abstract void eat();
}
interface Mammal {
void move(); // 接口中的方法都是抽象方法,没有实现
void breathe();
}
abstract class Animal {} // 抽象类
interface Mammal {} // 接口
class Dog extends Animal implements Mammal {} // 继承抽象类Animal并实现接口Mammal
abstract class Animal {
public void move() {} // public
protected void grow() {} // protected
void eat() {} // default
}
interface Mammal {
void move(); // public
void breathe(); // public
}
abstract class Animal {
int age; // 普通成员变量
public static final PI = 3.14; // public static final 常量
}
interface Mammal {
public static final int LEGS = 4; // public static final 常量
}
抽象类和接口都是用于定义规范,它们的区别在于: