Java基礎之基礎,抽象類和接口的區別。要是還不能很清晰的給別人講述這兩者之間的區別,建議自己動手寫寫代碼,就會有所領悟了。
1.抽象類
- public abstract class testAbstractClass {
- //抽象類是可以有私有方法或私有變量
- private int TEST_NUM;
-
- public abstract int testMethod();
-
- public int test2Method() {
- return 0;
- }
- //私有方法
- private int test3Method() {
- return 0;
- }
- }
2.接口
- public interface testInterface {
- //接口是公開的,裡面不能有私有的方法或變量,是用於讓別人使用的
- public abstract int testInterface();
- public int test2Interface();
-
- }
3.子類繼承抽象類
- public class testExtendsAbstractClass extends testAbstractClass{
- //繼承抽象類可以有選擇的重寫需要用到的方法,但抽象方法必須實現
- @Override
- public int testMethod() {
- // TODO Auto-generated method stub
- return 0;
- }
-
- }
4.子類實現接口
- public class testImplementsInterface implements testInterface {
- //實現接口一定要實現接口定義的所有方法
- @Override
- public int testInterface() {
- // TODO Auto-generated method stub
- return 0;
- }
-
- @Override
- public int test2Interface() {
- // TODO Auto-generated method stub
- return 0;
- }
-
- }
注:以上代碼均為編譯通過
總結:
1.接口是公開的,裡面不能有私有的方法或變量,是用於讓別人使用的;而抽象類是可以有私有方法或私有變量;
2.實現接口一定要實現接口定義的所有方法,而繼承抽象類可以有選擇的重寫需要用到的方法,但抽象方法必須實現;
3.一般應用裡,最頂級的是接口,然後是抽象類實現的接口,最後才是具體類的實現。
4.接口多實現,類單繼承
常見思考問題:
1.抽象類中私有方法或私有變量有什麼作用;
2.接口中抽象方法和一般方法有什麼區別;
3.其他……