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