Day12 抽象類、介面、內部類-面向對象編程(3)
- 2021 年 7 月 23 日
- 筆記
-
abstract修飾符可以用來修飾方法也可以用來修飾類,如果修飾方法,那麼該方法就是抽象方法;如果修飾類,那麼該類就是抽象類;
-
抽象類中可以沒有抽象方法,但是有抽象方法的類一定要聲明為抽象類。
-
抽象類,不能使用new關鍵字來創建對象,它是用來讓子類繼承的。
-
抽象方法,只有方法的聲明,沒有方法的實現,它是用來讓子類實現的。
-
子類繼承抽象類,那麼就必須要實現抽象類沒有實現的抽象方法,否則該子類也要聲明為抽象類。
package com.oop.demo08;
//abstract 抽象類: 類 extends: 類單繼承~ (介面可以多繼承)
public abstract class Action {
//約束~有人幫我們實現~
//abstract, 抽象方法, 只有方法名字 沒有方法的實現!!
public abstract void doSomething();
1.不能new抽象類,只能靠子類實現它: 約束! 2.抽象類里可以寫普通方法 3.抽象方法必須在抽象類中 抽象的抽象:約束
抽象類可以存在構造器:通過子類繼承 然後super調用
即使你沒有提供任何構造函數,編譯器將為抽象類添加默認的無參數的構造函數,沒有的話你的子類將無法編譯,因為在任何構造函數中的第一條語句隱式調用super
介面(重點)
-
聲明類的關鍵字是class,聲明介面的關鍵字是interface
-
普通類:只有具體的實現
-
抽象類:具體實現和規範(抽象方法)都有!
-
介面:只有規範!自己無發現方法 ! 專業的約束! 約束和實現分離: 面向介面編程!~
-
介面就是規範,定義的一組規則。
-
介面的本質就是契約,就像我們人的法律一樣,制定好後大家都遵守。
-
面向對象OO的精髓,是對對象的抽象,最能體現的這一點就是介面。
介面作用: 1.約束 2.定義一些方法,讓不同的人實現~ n—> 1 3.方法都是 public abstract 4.常量都是 public static final 5.介面不能被實例化!介面中沒有構造方法! 6.介面可以實現多繼承 通過implements實現多個介面 7.必須要重寫介面中的方法~
內部類(奇葩的程式碼)
-
內部類就是在一個類的內部在定義一個類,比如,A類中定義了一個B類,那麼B類相對A類來說就稱為內部類,而A類相對B類來說就是外部類了。
1.成員內部類
2.靜態內部類
public class Outer {
}
//一個java類中可以有多個class類,但是只能有一個public class
class A{
public static void main(String[] args) {
}
}
3.局部內部類
package com.oop.demo10;
public class Outer {
//局部內部類
public void method(){
class Inner{
public void in (){
}
}
}
}
4.匿名內部類