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)
假定打招呼是人的一個基本能力,名字\年齡是人的基本屬性,中國人、英國人、日本人都有名字年齡而中國人、英國人、日本人有卻有各自的打招呼方式,為了創(chuàng)建中國人、英國人、日本人這三個差異化的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:其他人一般叫這種類的關(guān)系叫繼承,盡管我們的目的就是對Person類進行擴展修改
3.多態(tài)
我們期望著在中國人和英國人分別打招呼的時候會使用各自的打招呼方式,(即調(diào)用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做類型檢測,然后根據(jù)不同的檢測結(jié)果在調(diào)用不同的類方法
}
}
我們期望著,中國說‘你好’,英國人會說‘hello’,實際上也正是如此。
多態(tài)的概念:同一操作作用于不同對象,可以有不同的解釋,有不同的執(zhí)行結(jié)果,這就是多態(tài)。
4.個人總結(jié)
問題的解決在我看來是 對問題涉及的各個事物狀態(tài)進行改變。而一個事務(wù)狀態(tài)的變化或獲取最好交給這個事務(wù)本身去完成,因為我們假定自己最了解自己(或者叫你辦事,我放心)。而編程解決問題的過程就可以分為幾個階段:>>對問題內(nèi)的事物進行抽象>>對各個事物初始化>>獲取事務(wù)的狀態(tài)>>根據(jù)狀態(tài)發(fā)送消息給事物>>事物變化狀態(tài)。
然而這個個人總結(jié)可能是我寫業(yè)務(wù)邏輯較多造成的錯覺(=_=!)。對于提高編程水平并沒什么大用。。。