Java語言中,抽象類和接口是兩個重要的概念。它們都是為了實現代碼的重用和可擴展性而設計的。
抽象類是指一個類中包含了至少一個抽象方法的類。抽象方法是沒有實現代碼的方法,需要子類來實現。抽象類本身不能被實例化,只能被繼承。抽象類可以有非抽象方法,它們可以被直接調用。
//抽象類示例 abstract class Animal{ String name; public abstract void makeSound(); public void eat(){ System.out.println(name+" is eating."); } } class Cat extends Animal{ public void makeSound(){ System.out.println(name+" meows."); } } Cat cat=new Cat(); cat.name="Tom"; cat.makeSound(); //輸出:"Tom meows." cat.eat(); //輸出:"Tom is eating."
接口是指一組方法和常量的集合,不包含任何實現代碼。接口可以被類實現,類可以實現多個接口。實現接口的類必須實現接口中所有的方法。接口可以用來實現多態。
//接口示例 interface Flyable{ void fly(); } class Bird implements Flyable{ public void fly(){ System.out.println("Bird is flying."); } } Flyable f=new Bird(); f.fly(); //輸出:"Bird is flying."
抽象類和接口的區別在于,抽象類可以有非抽象方法和實例變量,而接口只能有常量和方法。抽象類是設計用來作為類的模板,而接口則是設計用來作為多個類共用的行為規范。
當需要定義一個類的框架,但具體實現方式有多種,可以使用抽象類。當需要定義一個行為規范,讓多個類實現這個規范,可以使用接口。