抽象類
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.匿名內部類