Java面向對象(OOP)概念
Java面向對象(OOP)概念
Java命名約定
Java對象和類
Java構造器(構造方法)
Java static關鍵字
Java this關鍵字
Java繼承
Java聚合
Java方法重載
Java方法重寫
Java super關鍵字
Java實例初始化程序塊
Java final關鍵字
Java多態
Java靜態綁定和動態綁定
Java instanceof運算符
Java抽象類
Java接口
Java抽象類和接口的區別
Java包
Java訪問修飾符
Java封裝
Java Object類
Java對象克隆
Java數組
Java包裝類
Java按值調用和引用調用
Java strictfp關鍵字
Java命令行參數
對象和類之間的區別
java中方法重載和方法重寫的區別
Java抽象類和接口的區別
抽象類和接口都用於實現抽象,可以聲明抽象方法。 抽象類和接口都不能被實例化。但是在下面給出的抽象類和接口之間有許多區別。
抽象類
接口
抽象類可以有抽象和非抽象方法。
接口只能有抽象方法。 從Java 8開始,它也可以有默認和靜態方法。
抽象類不支持多重繼承。
接口支持多繼承。
抽象類可以有final
,非final
,靜態和非靜態變量。
接口只有靜態和final
變量。
抽象類可以提供接口的實現。
接口不能提供抽象類的實現。
abstract
關鍵字用來聲明抽象類。
interface
關鍵字用於聲明接口。
簡單地說,抽象類實現了部分抽象(0到100%),而接口實現了完全抽象(100%)。
Java抽象類和接口的示例
讓我們來看看下面一個簡單的例子,使用接口和抽象類。
//Creating interface that has 4 methods
interface A {
void a();// bydefault, public and abstract
void b();
void c();
void d();
}
// Creating abstract class that provides the implementation of one method of A
// interface
abstract class B implements A {
public void c() {
System.out.println("I am C");
}
}
// Creating subclass of abstract class, now we need to provide the
// implementation of rest of the methods
class M extends B {
public void a() {
System.out.println("I am a");
}
public void b() {
System.out.println("I am b");
}
public void d() {
System.out.println("I am d");
}
}
// Creating a test class that calls the methods of A interface
class Test5 {
public static void main(String args[]) {
A a = new M();
a.a();
a.b();
a.c();
a.d();
}
}
執行上面的示例代碼,得到以下結果 -
I am a
I am b
I am c
I am d