面向對象

1.類與對象(Class and Object)

類是對一系列對象某些共同特徵的抽象,例如人是對張三李四王五的抽象,在這個例子中‘人’是一個類,張三李四王五則是類的一個個實例(對象)。

class Person {
	String name;
	String age;
	void sayHello(){
           dosomthing();
    }
}
zhangsan = {name;"zhangsan",age:25};
lisi = {name;"lisi",age:50};
wangwu = {name;"wangwu",age:32};

2.類的擴展及修改(extends)

假定打招呼是人的一個基本能力,名字、年齡是人的基本屬性,中國人、英國人都有名字年齡而中國人、英國人有卻有各自的打招呼方式,爲了創建中國人、英國人、日本人這三個差異化的Person類,我們可以對Person類進行擴展及修改。

class Chinese extends Person{
	void sayHello() {
		System.out.println("我是"+name+",你好");//儘管在Chinese沒有顯示聲明name屬性,通過聲明擴展Person類獲得了name屬性,並重寫了方法。
	}
	void sayHello(Person p){
		System.out.println("我是"+name+",你好"+p.name);//對自己類聲明的方法進行重載
	}
}
class English extends Person{
	void sayHello() {
		System.out.println("I'm "+name+".Hello");//儘管在English沒有顯示聲明name屬性,通過聲明擴展Person類獲得了name屬性
	}
	void sayBye(){
		System.out.println("I'm "+name+".good bye");//對Person類進行了擴展,增加了sayBye()能力
	}
}

tips:其他人一般叫這種類的關係叫繼承,儘管我們的目的就是對Person類進行擴展修改

3.多態

我們期望着在中國人和英國人分別打招呼的時候會使用各自的打招呼方式,(即調用Chinese、English類各自的sayHello()方法),如下代碼:

public class DemoTest {
	public static void main(String[] args) {
		Person p1 = new Chinese();
		p1.name = "張三";
		Person p2 = new English();
		p2.name = "Mark";
		p1.sayHello();// 我是張三,你好,
		p2.sayHello();// I'm Mark.Hello
		//如果沒有多要多態(動態綁定),我們需要對p1,p2做類型檢測,然後根據不同的檢測結果在調用不同的類方法
	}
}

多態的特徵:同一操作作用於不同類的實例,可以有不同的解釋,有不同的執行結果,這就是多態。

4.個人總結

問題的求解在我看來是對問題涉及的各個事物狀態進行改變。 而一個事務狀態的變化或獲取最好交給這個事務本身去完成,因爲我們假定自己最瞭解自己(或者叫你辦事,我放心)。 而編程解決問題的過程就可以分爲幾個階段:>>對問題內的事物進行抽象>>對各個事物初始化>>獲取事務的狀態>>根據狀態發送消息給事物>>事物變化狀態。 然而這個個人總結可能是我寫業務邏輯較多造成的錯覺(=_=!)。對於提高編程水平並沒什麼大用。。。

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