抽象類(abstract)與接口(interface)

用abstract修飾的類就是抽象類
抽象類存在的幾個必要條件
1)必須用abstract 修飾類
2 )類中要有抽象方法
3)要有構造函數(可寫可不寫,系統會默認生成一個不帶參數的構造函數)
4)抽象類和抽象方法不能用final修飾,因爲抽象類是子類來繼承的,抽象方法是子類繼承後來根據實際需要來重寫的
註釋:有抽象方法的類一定就是抽象類。如果子類中沒有實現父類中的抽象方法,在子類中還應該繼續把該方法定義爲抽象方法

package network.com;

import org.junit.Test;

public abstract class Country {
private String country;
private String color;
private String continent;
private String area;
public  abstract  void Contient(String continent,String country);
public abstract void Area( String  area,String country);
//final abstract void hehe();//不能用final修飾抽象方法
public static void main(String[] args) {//這裏我是把主函數寫抽閒類中的,,,,我們往下看接口時可不可以這樣子寫
    Country ch=new china();//這裏就是一個典型的多態的應用,父類指向子類的引用
    ch.Contient("亞洲","中國" );
    ch.Area("960萬平方公里", "中國");
    Country Am=new china();
    Am.Contient("北美洲","美國");
    Am.Area("962.909萬平方公里", "美國");
    }   
}
class  china extends Country{//繼承父類Country
    @Override//重寫實現父類中Contient()的抽象方法
    public void Contient(String continent,String coutry) {
        System.out.println(coutry+"位於"+continent);
    }
    @Override//重寫實現父類中Area()的抽象方法
    public void Area(String  area,String  country) {
        System.out.println(country+"國土面積爲:"+area);
    }
}

顯示如下

中國位於亞洲
中國國土面積爲:960萬平方公里
美國位於北美洲
美國國土面積爲:962.909萬平方公里

接口(interface)
接口和抽象類其實是一樣的原理的,都實現了抽象方法,簡化了代碼的操作性,使得代碼有了具有更強的條理性和約束性
但是;;;;;
接口與抽象類是有區別的,而且在實用中大多數是用接口實現的
1)接口中只能定義常量和抽象方法
2)接口中沒有構造函數這一說法,也就沒有構造函數
3)接口用interface 修飾,接口中的抽象方法用public abstract 修飾 接口中的變量用public static final修飾
4)接口的抽象方法只能用繼承類來實現,使用implement關鍵字修飾,接口之間可以繼承,但不能實現接口中的方法,如果一個類實現了一個接口,那麼該接口中的所有方法都要實現
5)一個類只能繼承一個抽象類,但一個類卻可以實現多個接口,間接的實現了多繼承,同時接口之間也可以實現多多繼承
代碼實例

> /**
 * 定義一個接口裏面定義了常量和抽象方法
 */
public interface Country {
public static final  int HEIGHT=16;//定義常量
public static final int WIDTH=20;
public abstract  void country(String country ,String are);//定義抽象方法
public abstract void  are(String country,String continent);
} 
/**
 * 定義一個接口裏面只寫抽象方法
  */
public interface House {
 public abstract void  address(String add);
 public abstract double income(int perso,float average_income );
}
/**
 * 定義一個類實現多個接口
 */
public class Person  implements House,Country{//多接口的實現
    @Override
    public void country(String country, String are) {//對於接口中的抽象方法一一實現(重寫)
        System.out.println(country+"國土面積爲:"+are);
    }
    @Override
    public void are(String country, String continent) {
        System.out.println(country+"位於"+continent);
    }
    @Override
    public void address(String add) {
        System.out.println("首都是"+add);
    }
    @Override
    public double income(int perso,float average_income) {
        return perso*average_income;
    }
}
/**
 * 測試類
 */
public class Test01 {
        public static void main(String [] args){
            Person people=new Person();//初始化實例對象
            people.are("中國", "亞洲");//調用重寫後的方法
            people.address("北京");
            people.country("中國", "960萬平方公里");
            double income=people.income(5, 10000);
            System.out.println("家庭年輸入爲:"+income);
        }

}

顯示結果
中國位於亞洲
首都是北京
中國國土面積爲:960萬平方公里
家庭年輸入爲:50000.0

這裏我只是將抽象類與接口做了一個簡單的初始化介紹,對於接口的應用在實際編程中可謂每時每刻都會用到,根據實際問題找出對應解決辦法纔是編程的藝術,菜鳥冒昧了 望大神們多多指教

發佈了40 篇原創文章 · 獲贊 3 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章