1. 程式人生 > >javaSE中抽象類以及接口概述

javaSE中抽象類以及接口概述

java 接口 抽象類

一丶抽象類
1 關鍵字abstract(可以修飾類和方法)
(1)abstract修飾方法(抽象方法)
a.沒有了方法體; egg:public abstract void show();
b.抽象方法只保留方法的功能,子類必須重寫此方法。
(2)abstract修飾類(抽象類)
a.有抽象方法的類必須定義為抽象類,抽象類中可以有抽象方法,也可以有非抽象方法;
b.有構造器,但抽象類不可被實例化,可以通過抽象類的多態來間接對創建對象。
egg:
abstract class A{ //抽象類
public abstract void show();
}

class B extends A{
@Override
public void show(){
System.out.println("這是子類重寫的父類抽象方法");
}
}
public class Test(){
public static void main(String[] args){
A a = new B();
a.show(); //這是子類重寫的父類抽象方法
}
}
(3)不能與abstract共存的關鍵字(對於抽象方法來說)
a.private:有沖突 private私有的 不能被子類繼承,但是被abstract修飾的抽象方法需要子類對其重寫;
b.final:有沖突 final最終的 修飾方法其方法不能被重寫;
c:static:無意義 static靜態的 被static修飾的方法可以直接通過類名.方法訪問,而被abstract修飾的抽象方法沒有方法體。
2 抽象類的子類的特點
其子類可以是抽象類,也可以是非抽象類;通過繼承(extends)父類重寫抽象方法,去使用自己的功能
子類是抽象類:沒有任何意義,因為抽象類不能直接實例化,就不能調用方法;
子類是非抽象類:子類必須重寫抽象類中所有的抽象方法,抽象類要創建對象必須通過子類來實現。
二丶接口(interface)
1 定義(接口不是類,與類是並列關系)
接口可以看作是一個特殊的抽象類,是常量與抽象方法的集合。
格式:
interface 接口名{

}
2 特點
a.接口成員變量:必須是常量;默認由 public static final 修飾;
b.接口的成員方法:必須是抽象方法;默認由 public abstract 修飾;
c.接口沒有構造器,不能實例化,可以通過接口的多態間接創建對象;
d.接口定義的就是一種功能,比如學生和老師中有一部分人會說英語 此時學生 和老師定義為類,說英語就可以定義為一個接口,被類實現(implements);
e.實現接口的的類,必須要重寫其中的所有方法;

技術分享

f.類可以繼承一個類同時實現多個接口;
g.接口與接口之間是繼承關系,而且可以多繼承。
egg:
abstract class A{}
interface B1{}
interface B2{}
interface B3{}
interface B4 extends B2,B3{}
class C extends A implements B1,B2,B3,B4{}

三丶抽象類與接口的區別
1 成員的區別
抽象類: 成員變量:可以是變量,也可以是常量;
成員方法:可以有抽象方法,也可以有非抽象方法,其子類需重寫其抽象方法;
構造方法:有自己的構造方法 有參/無參。(凡是類都有構造器)
接口:
成員變量:默認被 public static final 修飾,必須是常量,可以通過 接口名.變量名 的方式之間訪問;
成員方法:默認被 public abstract 修飾, 必須是抽象方法,其子實現類必須重寫其所有方法;
構造方法:沒有構造器
2 關系的區別
類與類:單繼承
接口與接口:多繼承
類與接口:多實現
註意:一個類繼承一個類的同時還可以多實現多個接口。
3 設計理念的區別
抽象類: 是類的一種,他可以當成一種、一類抽象事物;
接口: 區別與類,與類並列,是一種功能的體現。
egg:教練和運動員案例
乒乓球運動員和籃球運動員。
乒乓球教練和籃球教練。
為了出國交流,跟乒乓球相關的人員都需要學習英語。
請用所學知識:
分析,這個案例中有哪些抽象類,哪些接口,哪些具體類
方案:

技術分享

javaSE中抽象類以及接口概述