? 封裝、繼承和多態是面向對象編程(OOP)的三個核心概念。下面我將分別解釋這些概念,并給出相應的示例。
封裝
概念:封裝是將數據(變量)和操作數據的方法(函數)組合到一個類中,并通過訪問修飾符(如public、private、protected)來限制對數據的訪問級別。封裝可以隱藏類的內部實現細節,只提供必要的接口與外部交互,從而增強代碼的安全性和可維護性。
示例:
public class Person { | |
private String name; // 私有變量,只能在類內部訪問 | |
private int age; | |
// 提供公共的getter和setter方法來訪問和修改私有變量 | |
public String getName() { | |
return name; | |
} | |
public void setName(String name) { | |
this.name = name; | |
} | |
public int getAge() { | |
return age; | |
} | |
public void setAge(int age) { | |
this.age = age; | |
} | |
} |
繼承
概念:繼承允許我們創建一個新的類(子類或派生類),它繼承自一個已存在的類(父類或基類)的屬性和方法。子類可以添加新的屬性和方法,也可以重寫父類的方法。繼承提高了代碼的復用性,使得代碼更加易于維護和管理。
示例:
public class Animal { | |
void eat() { | |
System.out.println("Animal eats"); | |
} | |
} | |
public class Dog extends Animal { // Dog類繼承自Animal類 | |
void bark() { | |
System.out.println("Dog barks"); | |
} | |
// 重寫父類的eat方法 | |
@Override | |
void eat() { | |
System.out.println("Dog eats dog food"); | |
} | |
} |
多態
概念:多態是指同一操作作用于不同的對象,可以有不同的解釋和執行結果。在Java中,多態主要通過方法的重寫(Override)和重載(Overload)來實現。同時,多態也體現在父類引用指向子類對象時,可以調用子類重寫后的方法。
示例(重寫導致多態):
public class Main { | |
public static void main(String[] args) { | |
Animal animal = new Dog(); // 父類引用指向子類對象 | |
animal.eat(); // 輸出 "Dog eats dog food",因為Dog類重寫了eat方法 | |
} | |
} |
示例(重載導致多態,但重載通常不直接涉及子類與父類的關系):
public class Calculator { | |
// 重載add方法,接受兩個int參數 | |
int add(int a, int b) { | |
return a + b; | |
} | |
// 重載add方法,接受兩個double參數 | |
double add(double a, double b) { | |
return a + b; | |
} | |
public static void main(String[] args) { | |
Calculator calc = new Calculator(); | |
int sum1 = calc.add(2, 3); // 調用int版本的add方法 | |
double sum2 = calc.add(2.5, 3.5); // 調用double版本的add方法 | |
System.out.println("Sum1: " + sum1); // 輸出 "Sum1: 5" | |
System.out.println("Sum2: " + sum2); // 輸出 "Sum2: 6.0" | |
} | |
} |
以上示例展示了面向對象編程中封裝、繼承和多態的基本概念及其用法。