1. 程式人生 > >抽象類和接口的簡要概述

抽象類和接口的簡要概述

extend 表示 inter oid 不能 訪問修飾符 子類 ext 都差不多

1、抽象類:

關鍵字:abstract 修飾的類

特點:具有抽象方法的類,不能夠實例化,可以同時有普通方法和抽象方法;

定義:訪問修飾符 abstract class 類名{}

抽象方法:訪問修飾符 abstract class 方法名();

抽象方法和抽象類不能夠用用private修飾,有構造方法,子類如果繼承了它需要實現裏面的抽象方法(就是方法重寫)

public abstract class abstra {
public abstract void play();
}

作用:主要用作父類,在子類眾多都需要繼承父類中方法的時候,不好在父類定義方法,可以使用abstract修飾類和方法,

一般用於父類,使用起來除了不能夠實例化其它都差不多;

2、接口:

關鍵字:interface

用關鍵字implements實現接口;

特點:抽象類的升級,接口裏面的方法都是抽象方法,由常量和抽象方法組成不能夠實例化;

定義:訪問修飾符 interface 接口名字{}

抽象方法和接口不能夠用用private修飾,無構造方法,子類中如果實現了接口implements需要重寫裏面的方法;

public interface inter {
public final double PI=3.14;
public abstract void play();//public abstract可以省略
}

應用範圍:

a.接口可以繼承多個接口;

b.子類可以實現多個接口;

c.子類可以繼承一個父類同時實現多個接口;註意一般extends繼承的父類在前,implements在後

作用:解耦,降低程序之間的耦合性,減少非他不可的不可替代性,提高程序的擴展性,;解決了類的單一繼承性;

個人理解:在應用的過程中,一般來說抽象類可以解決需要接口的問題,但是抽象類一般用作於一個類屬性的父類,如果有很多子類需要一個共同的方法,而類型不同呢?

這個時候最好定義一個接口,接口表示一個功能,沒有類屬性的局限性(比如說動物類定義為抽象類,那麽裏面的抽象方法一般都為動物的屬性方法,具有局限性),只有有這個功能,都可以實現這個接口;

可以和多態一起結合使用,把接口作為返回值類型或者參數更能夠體現接口的解耦性,接口能夠更好的體現解耦;

3. 抽象類和接口的區別

a、抽象類可以有普通方法和普通屬性;

b、抽象類有構造方法;

c、抽象類和接口定義的關鍵字不同;

d、抽象類只能單繼承,接口可以繼承多個接口

註意:抽象類不可以繼承接口,可以實現接口。

抽象類和接口的簡要概述