Java面向物件的三個特徵:封裝、繼承、多型
阿新 • • 發佈:2019-01-30
一、封裝
定義
封裝就是將資料或函式等集合在一個個的單元中,通俗來講就是將屬性或方法定義在一個類中
意義
封裝的意義在於保護或者防止程式碼被意外修改。
封裝提供了一個有效的途徑來保護資料不被意外的破壞。將資料的作用域在程式中定義為public改為private在很多方面會更好。私有的資料可以用兩種方式來間接的控制。第一種方法,我們使用傳統的存、取方法。第二種方法我們用屬性(property)。
封裝時的許可權控制符區別如下:
作用域使用原則:儘量使用private
例
/**
* 封裝
*/
public class Animal {
//私有化屬性
private String name;
//私有化方法
private void eat(){
}
}
二、繼承
繼承主要實現重用程式碼,節省開發時間。繼承通過extends關鍵字來實現
例
/**
* 繼承
*/
public abstract class Animal {
public abstract void eat();
}
public class Dog extends Animal {
@Override
public void eat() {
}
}
三、多型
定義
同一操作作用於不同的物件,可以有不同的解釋,產生不同的執行結果。
多型的三個條件:
繼承、重寫、父類引用指向子類物件
當使用多型方式呼叫方法時,首先檢查父類中是否有該方法,如果沒有,則編譯錯誤;如果有,再去呼叫子類的同名方法。
多型的好處:可以使程式有良好的擴充套件,並可以對所有類的物件進行通用處理。
多型的實現方式:重寫、介面、抽象類和抽象方法
例
public class Person {
private void eat(){
System.out.println("人吃飯!");
}
}
public class Chinese extends Person{
// 重寫父類方法
public void eat() {
System.out.println("中國人在吃飯!");
}
}
public class English extends Person{
// 重寫父類方法
public void eat() {
System.out.println("英國人在吃飯!");
}
}
// 測試類
public class TestEat {
public static void main(String[] args) {
TestEat test = new TestEat();
// 引用指向中國人,建立中國人類物件
Person person1 = new Chinese();
// 此時呼叫的是Chinese的eat()方法
test.showEat(person1);
Person person2 = new English();
// 此時呼叫的是English的eat()方法
test.showEat(person2);
}
// 使用父類作為方法的形參,實現多型
public void showEat(Person person) {
// 傳入的是哪具物件就呼叫哪個物件的eat()方法
person.eat();
}
}