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