1.類與對(duì)象(Class and Object)
類是對(duì)一系列對(duì)象某些共同特征的抽象厂置,例如人是對(duì)張三李四王五的抽象逼裆,在這個(gè)例子中‘人’是一個(gè)類,張三李四王五則是類的一個(gè)個(gè)實(shí)例(對(duì)象)。
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.類的擴(kuò)展及修改(extends)
假定打招呼是人的一個(gè)基本能力,名字\年齡是人的基本屬性冲粤,中國人美莫、英國人、日本人都有名字年齡而中國人梯捕、英國人厢呵、日本人有卻有各自的打招呼方式,為了創(chuàng)建中國人傀顾、英國人襟铭、日本人這三個(gè)差異化的Person類,我們可以對(duì)Person類進(jìn)行擴(kuò)展及修改短曾。
class Chinese extends Person{
void sayHello() {
System.out.println("我是"+name+",你好");//盡管在Chinese沒有顯示的標(biāo)明具有name屬性寒砖,通過聲明擴(kuò)展Person類獲得了name屬性,并重寫了方法嫉拐。
}
void sayHello(Person p){
System.out.println("我是"+name+",你好"+p.name);//對(duì)自己類聲明的方法進(jìn)行重載
}
}
class English extends Person{
void sayHello() {
System.out.println("I'm "+name+".Hello");//盡管在English沒有顯示的標(biāo)明具有name屬性哩都,通過聲明擴(kuò)展Person類獲得了name屬性
}
void sayBye(){
System.out.println("I'm "+name+".good bye");//對(duì)Person類進(jìn)行了擴(kuò)展,增加了sayBye()能力
}
}
tips:其他人一般叫這種類的關(guān)系叫繼承婉徘,盡管我們的目的就是對(duì)Person類進(jìn)行擴(kuò)展修改
3.多態(tài)
我們期望著在中國人和英國人分別打招呼的時(shí)候會(huì)使用各自的打招呼方式茅逮,(即調(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
//我們并沒有對(duì)p1,p2做類型檢測,然后根據(jù)不同的檢測結(jié)果在調(diào)用不同的類方法
}
}
我們期望著塌计,中國說‘你好’挺身,英國人會(huì)說‘hello’,實(shí)際上也正是如此锌仅。
多態(tài)的概念:同一操作作用于不同對(duì)象章钾,可以有不同的解釋墙贱,有不同的執(zhí)行結(jié)果,這就是多態(tài)贱傀。
4.個(gè)人總結(jié)
問題的解決在我看來是 對(duì)問題涉及的各個(gè)事物狀態(tài)進(jìn)行改變惨撇。而一個(gè)事務(wù)狀態(tài)的變化或獲取最好交給這個(gè)事務(wù)本身去完成,因?yàn)槲覀兗俣ㄗ约鹤盍私庾约海ɑ蛘呓心戕k事府寒,我放心)魁衙。而編程解決問題的過程就可以分為幾個(gè)階段:>>對(duì)問題內(nèi)的事物進(jìn)行抽象>>對(duì)各個(gè)事物初始化>>獲取事務(wù)的狀態(tài)>>根據(jù)狀態(tài)發(fā)送消息給事物>>事物變化狀態(tài)。
然而這個(gè)個(gè)人總結(jié)可能是我寫業(yè)務(wù)邏輯較多造成的錯(cuò)覺(=_=!)株搔。對(duì)于提高編程水平并沒什么大用剖淀。。纤房。