面向對象三大特性 -- 筆記

面向對象三大特性 -- 筆記

面向對象三大特性

	面向對象三大特性:封裝、繼承、多態

封裝

封裝:將類的某些信息隱藏在類內部,不允許外部程序直接訪問,而是通過該類提供的方法來實現對隱藏信息的操作和訪問

封裝的好處

  1. 隱藏類的實現細節;
  2. 只能通過規定方法訪問數據;
  3. 方便加入控制語句;
  4. 方便修改實現;

封裝的步驟

  1. 修改屬性可見性 – 設爲private
	public class pet {
		// 創建屬性並修改可見性
		private String name;
		private int age;
	}
  1. 創建get/set方法 – 用於屬性讀寫
	// 創建get方法
	public String getName() {
		return name;
	}
	// 創建set方法
	public void setName(String name) {
		this.name = name;
	}
  1. 在get/set方法中加入控制語句 – 對屬性進行合法判斷
	public void setAge(int age) {
		// 加入控制語句
		if(age > 0 && age < 100){
			this.age = age;
		}
	}

繼承(is-a)

繼承:使用繼承可以優化代碼,將重複代碼抽取到父類當中,減少代碼量,方便修改代碼

使用繼承

  1. 編寫父類
class pet {
	//公共屬性和方法
}
  1. 編寫子類,繼承父類
class dog extends pet {
	//子類特有的屬性和方法
}
class cat extends pet {
	//子類特有的屬性和方法
}

繼承的特性

  • 單根性
    只能繼承一個類,不能多重繼承

  • 傳遞性
    從父類繼承來的元素,可以被子類繼承

子類訪問父類成員

使用super關鍵字

  • 訪問父類構造方法
	//構造器
	public dog() {
		// 訪問父類構造方法
		// super();
		super("二哈",2);
	}
  • 訪問父類構造屬性
	super.name;
  • 訪問父類方法
	super.print();

不可被繼承的資源

  • 不可繼承被私有化的屬性和方法
  • 構造方法

多態

多態:指一個行爲,擁有多種不同表現形式。 例:小明擁有人類形態同時擁有學生形態

優點: 可擴展性強

使用多態實現思路

  1. 編寫父類
	class Pet {
		//喫東西
		public void eat(){		
		}
	}
  1. 編寫子類,子類重寫父類方法
	class Dog extends Pet {
		//重寫父類方法
		public void eat(){
			System.out.println("喫骨頭");
		}
	}
  1. 運行時,使用父類類型,子類對象
	class cat extends Pet {
		//向上自然轉型
		Pet pet = new Dog();
	}

何時使用多態

1.當父類爲方法參數
2.當父類作爲方法返回值

只能調用父類有的方法
例:

創建父類並添加方法

public class Father {
	public void eat(){
	}
}

創建子類重寫父類方法並添加獨有方法

public class Son extends Father{
	public void eat(){
		System.out.println("喫飯");
	}
	
	public void play(){
		System.out.println("玩");
	}
}

使用多態調用方法

public class Main {
	public static void main(String[] args) {
		Father father = new Son();
		father.eat();
		//報錯
		father.play();
	}
}

編譯看左邊,運行看右邊

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章