首先應該明確一點的是,抽象方法必須定義在抽象類中。
先看一個抽象類的定義:
public abstract class Animal { public abstract void eat(); public abstract void sleep(); public void Smile() { System.out.println("每個動物都會微笑,因為最美!"); } }
抽象類作為一個父類,可以定義抽象方法,也可以定義一般方法。
我們在來定義一個子類:
public class Man extends Animal{ public void eat() { System.out.println("一天天就知道個吃"); } public void sleep() { System.out.println("就知道個睡"); } public static void main(String[] args) { Man obj=new Man(); obj.eat(); obj.sleep(); obj.Smile(); } }
子類Man繼承了抽象類,那么就必須將其抽象方法實現,是必須,必須,不然就會報錯。
抽象類和接口的區別:
子類繼承了抽象類,抽象方法必須實現,然而其他其他方法可以不實現,抽象方法中也可以定義不是抽象的方法
子類實現接口,接口中默認的方法都為抽象方法,也就不能實現,一個子類可以實現多個接口,而只能繼承一個抽象類,其實接口是抽象類中更為具體的一種類而言。
public interface TrafficTool { void Car(); void Airport(); void Train(); } public class LandTool implements TrafficTool { public void Car() { System.out.println("走,咋們炸汽車去"); } public void Airport() { System.out.println("走,咋們炸飛機去"); } public void Train() { System.out.println("搶火車去不去,愣貨"); } public static void main(String[] args) { LandTool obj=new LandTool(); obj.Car(); obj.Airport(); obj.Train(); } }
補充接口,接口不允許任何方法定義,接口和實現完美分離。
