java 封裝多態繼承


java 面向對象思想 封裝多態繼承

面向過程與面向對象

編程分為面向對象編程和面向對象編程,匯編,C語言是面向過程寫代碼,C++/Java是面向對象

其實面向過程和面向對象在本質都是一樣寫代碼,然后將代碼翻譯成機器碼讓中央處理器去執行,但是在實現功能和整體設計上,相對於人來說,特別是Java,面向對象在設計上更抽象,是寫代碼在設計上的升華。

Java里說,萬物皆對象,如果說java的面向對象設計思想是java火起來的原因,那么Spring設計思想讓Java的光彩放大。

Java面向對象特性

萬物皆對象

在Java中,除了基礎數據類型,char int float 與數學計算相關的基本類型,其他所有的任何都是對象,他們會有對應的類名,字節碼

封裝

java實際編寫功能時,所寫代碼皆對象,因此封裝無處不在,你可以隱藏對象的屬性(private), 通過封裝方法對類里面的內容操作。

封裝(Encapsulation)是面向對象方法的重要原則,就是把對象的屬性和操作(或服務)結合為一個獨立的整體,並盡可能隱藏對象的內部實現細節。

1將類的某些信息隱藏在類的內部,不允許外部程序進行直接的訪問調用。

2通過該類提供的方法來實現對隱藏信息的操作和訪問。

3隱藏對象的信息。

4留出訪問的對外接口。

封裝的好處

簡單一句話,高內聚,低耦合

繼承

繼承就是父子之間一種關系特性,如A類繼承B類,那么A是子類,B是父類,通俗的理解,A(子類)繼承了B(父類)的一些公共屬性和方法。

簡單來說,繼承用在一些共性上,是設計上的抽象一種表現。

四肢動物是抽象的,但是你知道他有四肢,那么你可以定義一個屬性,說明他是四肢動物,貓和狗可以繼承它,雞是兩條腿不能繼承它,這是從面向對象設計角度去描述繼承的使用

多態

多態是同一個行為具有多個不同表現形式或形態的能力。

多態的特點

1,消除類型之間的耦合關系,實現低耦合。

2,靈活性。

3,可擴充性。

4,可替換性。

你可以定義一種抽象類,並且創建抽象類的具體實現,之后所有子類對象創建可以用父類去接收,在執行方法時,父類引用指向子類對象,方法也是子類的方法,都是父類,指向不通子類,執行方法結果不一樣,就是多態。

封裝多態繼承 代碼體現


/** -定義抽象類,動物
 * Animal-定義一個動物
 * @author Narule
 *
 */
public abstract class Animal {
	
	// 動物腿的數量
	protected int legNum;
	
	// 動物吃的食物
	protected String food;

	// 動物名字
	protected String name;

	// 是否是四肢動物 方法定義
	boolean isFourLegAnimal() {
		return legNum == 4;
	}	
	
	// 吃食物,抽象方法定義,具體動物需要實現次方法
	public String eatFood() {
		System.out.println(this.name);
		System.out.println("----------");
		System.out.println(this.name + " eat food is "  +  this.food);
		System.out.println("----------");
		return this.food;
	}
	
	
	
}

// 繼承動物
/*
 * Animal-雞
 */
class Chicken extends Animal{
	
	/* - 一種封裝手法,你可以創建一只雞對象
	 * - 但是因為封裝了,你沒辦法修改雞的腿的條數,這一封裝好處的一個具體表現
	 */
	
	public Chicken() {
		this.legNum = 2;
		this.food = "insect 蟲子";
		this.name = "Chicken";
	}

}

/*
 * Animal-狗
 */
class Dog extends Animal{
	
	public Dog() {
		this.legNum = 4;
		this.food = "bone 骨頭";
		this.name = "Dog";
	}

}

/*
 * Animal-貓
 */
class Cat extends Animal{
	
	public Cat() {
		this.legNum = 4;
		this.food = "fish 魚";
		this.name = "Cat";
	}

	@Override
	public String eatFood() {
		System.out.println("override method define cat how to eat food");
		return super.eatFood();
	}

	
}

測試 封裝多態繼承特性

public class JavaFeatureTest {

	// java 封裝 繼承 多態  簡單理解表達
	public static void main(String[] args) {
		
		// 創建三個動物對象 雞 狗 貓
		// 封裝體現,創建對象不能去修改他的屬性
		Animal animal1 = new Chicken();
		Animal animal2 = new Dog();
		Animal animal3 = new Cat();
		
		// 判斷是否是四條腿的動物 繼承體現
		System.out.println(animal1.isFourLegAnimal());
		System.out.println(animal2.isFourLegAnimal());
		System.out.println(animal3.isFourLegAnimal());
		
		// 吃東西  多態體現,同一個行為j具有多個不通表現形式
		animal1.eatFood();
		animal2.eatFood();
		animal3.eatFood();
		
		// 多態 父類引用指向子類對象
		animal3 = new Chicken();
		animal3.eatFood();
		
	}
}

控制台輸出

false
true
true
Chicken
----------
Chicken eat food is insect 蟲子
----------
Dog
----------
Dog eat food is bone 骨頭
----------
override method define cat how to eat food
Cat
----------
Cat eat food is fish 魚
----------
Chicken
----------
Chicken eat food is insect 蟲子
----------

Spring學習

很多時候,如果只是功能需求,我們甚至可以只寫一個接口,定義接口抽象方法的輸入和輸出,沒有具體實現,然后在開發的時候對應具體不同場景不同開發人員,可以容許不同的設計和實現。這樣軟件設計開發中很好的提高開發效率,並且以維護,易擴展,低耦合,安全。

多態,繼承,封裝高級使用,設計模式,Spring框架很多具體體現,(依賴抽象不依賴具體,控制反轉,代理),Spring是很值得學習的框架


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM