java中抽象类和接口的区别
先看一下抽象类和接口在java中的定义
抽象类的定义
1
2
3
4
5
6
7
8
|
//抽象类定义 public
abstract
class
AbstractClass {
public
int
x; //抽象类中可以有普通的成员变量
public
void
concretMethod(){
System.out.println( "具体实现的方法" ); //具体方法的实现 在子类中可以重写 也可以不重写
}
public
abstract
void
abstractMethod(); //抽象方法 必须在子类中实现
} |
接口的定义
1
2
3
4
5
6
7
|
//接口定义 public
interface
Interface {
public
static
final
int
y = 2 ; //接口中只能有static final类型的成员变量 static 表示全局变量 final表示不能修改
public
int
x = 1 ; //可以不用static final申明 会隐式申明为static final 必须初始化
public
abstract
void
method(); //接口中只能有抽象方法 不能有具体实现的方法 abstract可以不用显示申明
} |
下面来分析一下两者的区别
java抽象类
1.java抽象类中可以有普通成员变量
2.java抽象类中可以有抽象方法,也可以有具体实现的方法
3.java抽象类的子类必须实现父类抽象类的方法,可以重写父类已经实现的方法,也可以不重写
java中的接口
1.接口中只能有static final类型的成员变量,且必须初始化,即使不显示申明成static final类型的,系统也会隐式申明为static final类型
2.接口中只能有抽象方法
3.实现接口的类必须实现接口所有的抽象方法
ps:java类只能继承一个父类,可以实现多个接口