又經過了一週的學習,今天對本週學習進行總結 本週學習了Java物件導向進階內容
抽象類和抽象方法
抽象類
使用abstract關鍵字宣告的類被稱為抽象類。抽象類不能被例項化。
抽象方法
使用abstract關鍵字宣告的方法被稱為抽象方法。抽象方法沒有方法體,即大括號{}內沒有程式碼實現。
抽象方法只能存在於抽象類中,或作為介面的一部分。如果一個類包含了抽象方法,那麼這個類也必須被宣告為抽象類。
示例
// 定義一個抽象類
abstract class Animal {
// 抽象方法
abstract void eat();
// 非抽象方法
void sleep() {
System.out.println("Animal is sleeping.");
}
}
// 實現抽象類的子類
class Dog extends Animal {
// 必須實現父類的抽象方法
void eat() {
System.out.println("Dog is eating.");
}
// 可以選擇重寫非抽象方法
void sleep() {
System.out.println("Dog is sleeping soundly.");
}
}
public class TestAbstract {
public static void main(String[] args) {
// 由於Animal是抽象類,不能直接例項化
// 建立Dog類的例項
Dog myDog = new Dog();
// 呼叫方法
myDog.eat();
myDog.sleep();
}
}
介面
介面是一種引用型別,和類一樣,也是一種型別,是由常量、抽象方法組成的特殊類。
介面中的方法預設是public abstract
介面中可以有常量
介面不能被例項化,介面沒有構造方法,因為介面代表的是一個規範,不能直接被例項化。
一個類可以實現多個介面,但只能繼承一個類
介面與介面之間可以繼承
示例
public interface InterfaceName {
// 常量宣告
public static final int CONSTANT_NAME = value;
// 抽象方法宣告
void method1();
default void defaultMethod() {
// 方法體
}
static void staticMethod() {
// 方法體
}
}
內部類
成員內部類
成員內部類是非靜態的,它依賴於外部類的例項。
靜態內部類
靜態內部類不依賴於外部類的例項,可以在沒有外部類例項的情況下建立靜態內部類的例項。靜態內部類不能訪問外部類的非靜態成員,但可以訪問外部類的靜態成員。
區域性內部類
區域性內部類是定義在方法或作用域內的類。它只能在其定義的作用域內被訪問和使用,並且不能包含靜態成員。區域性內部類可以訪問外部類的成員,也可以訪問定義它的方法或作用域內的區域性變數。
匿名內部類
匿名內部類是沒有名稱的內部類,它通常用於實現介面或繼承其他類。