普通类、抽象类实现接口的区别

普通类、抽象类实现接口的区别

1、普通类实现接口,需要实现接口里所有的方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/*接口*/
public interface BaseView {
void showLoadingDialog(String msg);

void dismissLoadingDialog();
}

/*普通类*/
public class MyView implements BaseView{
@Override
public void showLoadingDialog(String msg) {

}

@Override
public void dismissLoadingDialog() {

}
}

2、抽象类实现接口,可以选择实现或者部分实现(包括完全不实现)接口里的方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public abstract class MyView implements BaseView{
@Override
public void showLoadingDialog(String msg) {

}
}

当我们需要实现接口里的部分方法时,可以先写一个抽象类来实现该接口,并且实现除了我们想要的方法之外的方法,也就是我们在抽象类里实现不需要的方法,当我们的类(RootView)去继承这个抽象类时,RootView中就只需要实现我们需要的方法了。
public class RootView extends MyView {

@Override
public void dismissLoadingDialog() {

}
}
总结:
抽象类有个好处就是,它可以有方法的具体实现,也可以不写方法的具体实现,而接口里是没有具体实现的。
一个类如果实现一个接口,那它必然要实现接口里的所有方法,而如果一个抽象类实现一个接口的话,抽象类里可以只写部分方法或者完全不重写任何方法。