一、繼承
繼承是Java面向對象中的一個基本概念,它允許我們定義一個類作為另一個類的擴展,從而可以重用已有的代碼和數據。Java的繼承是通過關鍵字“extends”實現的,子類繼承父類的所有非私有屬性和方法。
// 父類Animal public class Animal { private String name; private int age; public Animal(String name, int age) { this.name = name; this.age = age; } public void eat() { System.out.println(name + " is eating"); } } // 子類Dog public class Dog extends Animal { private String breed; public Dog(String name, int age, String breed) { super(name, age); this.breed = breed; } public void bark() { System.out.println("The dog is barking"); } } // 使用 Dog dog = new Dog("Tom", 2, "Golden Retriever"); dog.eat(); dog.bark();
在上述代碼中,Dog類繼承了Animal類,並且重寫了eat()方法。子類可以訪問父類的非私有屬性和方法,並且可以添加自己的屬性和方法。
二、多態
多態是Java面向對象中的另一個重要概念,它允許我們用父類的引用來指向子類實例,從而可以靈活地處理不同的類型。
// 父類Animal public class Animal { public void eat() { System.out.println("The animal is eating"); } } // 子類Dog public class Dog extends Animal { public void eat() { System.out.println("The dog is eating"); } } // 使用 Animal animal = new Dog(); animal.eat();
在上述代碼中,我們使用Animal類的引用來指向Dog實例,調用eat()方法時會調用Dog類的eat()方法而不是Animal類的eat()方法。這就是多態的表現。
三、抽象類和接口
抽象類和接口是Java中用於實現多態的兩種方式。
1.抽象類
抽象類是一個不能被實例化的類,它可以包含抽象方法和非抽象方法,被繼承的子類必須實現抽象方法。抽象類用“abstract”關鍵字定義。
// 父類Animal public abstract class Animal { public abstract void eat(); } // 子類Dog public class Dog extends Animal { public void eat() { System.out.println("The dog is eating"); } }
在上述代碼中,Animal類是一個抽象類,它定義了一個抽象方法eat(),子類必須實現該方法。Dog類是Animal類的子類,並且重寫了eat()方法。
2.接口
接口是Java中另一種實現多態的方式,它是一個抽象類的延伸,它只包含了抽象方法和常量,被實現的類必須實現所有的抽象方法。接口用“interface”關鍵字定義。
// 接口Eat public interface Eat { void eat(); } // 實現類Dog public class Dog implements Eat { public void eat() { System.out.println("The dog is eating"); } }
在上述代碼中,Eat是一個接口,它只包含一個抽象方法eat()。Dog類實現了Eat接口,並且實現了eat()方法。
四、總結
繼承和多態是Java面向對象的基本概念,可以幫助我們更好地組織代碼和實現代碼的重用。抽象類和接口是擴展多態的兩種方式,它們允許我們定義更加抽象和靈活的代碼結構。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/308510.html