day12 Java語言中的抽象類與接口
一、抽象類和接口概述;
在昨天我們學習了Java的繼承功能,這個是一個核心知識點,今天我們再繼承的基礎之上學習一下抽象類和接口這兩個知識。什麼是抽象類?如何定義一個抽象類?如何使用一個抽象類?這些都是我們需要掌握的。
同時我們還要知道如何來定義一個接口,在開發中定義接口來實現相關的功能是一個很重要的功能。如何來實現接口中的抽象方法,這些在這一節都會說到。
二、抽象類和接口
1、抽象類:
什麼是抽象類?包含抽象方法的類就叫做抽象類 。使用abstract關鍵字修飾的類。
抽象類的意義?抽象類存在意義就是被繼承,是定義的一個模板、由子類實現它的抽象方法。
抽象類可以包含成員變量、方法、構造器、初始化塊內部類等。
注意:同時抽象類是不能夠被實例化的。
如果是使用的final關鍵字不能夠和abstract關鍵字同時出現。
final關鍵字修飾的類不能夠被繼承,final關鍵字修飾的方法不能夠被重寫,final關鍵字不能和abstract關鍵字同時使用。
2、抽象方法:
抽象方法就是在一個類裏面使用abstract關鍵字修飾的方法就稱爲是抽象方法。
注意:抽象方法是沒有方法體的,需要子類繼承實現這個抽象方法。
3、實例一:
package www.com.c3; //抽象類abstract class //定義動物類 abstract class Animal{ String color; int leg; //抽象方法,沒有具體的方法體來實現它 public abstract void eat(); } //方法一、將繼承的子類也定義爲一個抽象類。 //方法二、在普通子類繼承父類以後,子類裏面實現父類中的具體的抽象方法。 class Dog extends Animal{ //這就是實現父類中的抽象方法。我們需要實現它 @Override public void eat() { System.out.println("狗是要吃食物的!"); } } //主類 public class abstract01 { public static void main(String[] args) { Dog dog = new Dog(); dog.eat(); } }
4、接口(interface):
接口是個什麼東西?感覺好陌生一樣,實則不然,你想一想,做開發我們分爲前端開發和後臺開發兩個主體,兩個主題之間就是通過一些接口實現產品的功能。前端或後臺定義好一個接口以後你就可以直接通過接口實現功能。這樣節省了大量的研發時間。所以說,接口是一個好東西。
5、接口:就是一個完全抽象出來的類。二這個類裏面定義的全部是抽象方法,都是public abstract關鍵字開頭的。
6、在接口中也可以定義一些變量,但是這些變量全部都要初始化以後才能夠使用。而且全部都是“public satatic final”關鍵字修飾開頭的
7、在接口中是不能夠含有“構造函數”的。
8、實例二
package www.com.c3; //定義接口: interface Studets{ //定義變量,並初始化 String name = "zs"; //定義方法 public abstract void student(); } //注意:類和類之間:是繼承關係, // 類和接口之間:是實現關係。通過implements關鍵字實現。 //同時需要實現接口中的抽象方法。 //子類實現父類中的抽象方法 class Am implements Studets{ @Override public void student() { System.out.println("姓名:"+name); } } //主類 public class Interface01 { public static void main(String[] args) { //接口是不能夠被實例化的 //Studets st = new Studets(); Am a = new Am(); a.student(); } }
三、接口與抽象類在用法上的區別:
1、接口裏面只能包含抽象方法、靜態方法和默認方法,不能夠爲普通方法提供方法實現;
抽象類裏面完全可以包含普通方法。
2、接口裏面只能定義靜態常量,不能定義普通成員變量;
抽象類裏面既可以定義普通成員變量,也可以定義靜態常量。
3、接口裏面不包含構造器;
抽象類裏面可以包含構造器,在抽象類裏面的構造器並不是用於創建對象,而是讓其子類調用這些構造器來完成屬於抽象類的初始化操作。
4、接口裏面不能包括初始化塊;
抽象類則完全可以包含初始化塊。
5、一個類最多只能有一個直接父類,包括抽象類;
但是一個類可以直接實現多個接口,通過獅子按多個解救可以彌補Java單繼承的不足之處。
四、結束語:
到這裏我們就搗鼓完了,沒有關係,如果不懂我後續看看有視頻資源分享一點給大家。