大白话系列之java_大白话系列之——Java的面向对象思想
1、舉例理解面向?qū)ο?/p>
說(shuō)到面向?qū)ο蟮乃枷?#xff0c;有一句話不得不說(shuō):萬(wàn)物皆對(duì)象,萬(wàn)物皆可歸類
什么意思呢?
就是說(shuō)在面向?qū)ο蟮乃枷肜锼J(rèn)為只要是存在的事物,它都是一個(gè)實(shí)例對(duì)象,都能找到一種或多種屬于它的歸類。
比如說(shuō)有一個(gè)學(xué)生張三,你可以把他歸類于人類,也可以把它歸類于學(xué)生類等等;
再比如說(shuō)你們家的貓,你可以把它歸類于動(dòng)物類,也可以把它歸類于貓科類。
所以,類具體的怎么去定義,是看你從哪個(gè)角度去思考它了。總之一個(gè)東西只要它存在,你就肯定能給它歸個(gè)類,就算是遇到非常非常非常極端的情況,比如你家里有某一個(gè)東西,這種東西在世界上只有它一個(gè),那也能給他歸個(gè)某某某類,只不過(guò)這種類里只有它一個(gè)對(duì)象而已。
所以在面向?qū)ο蟮乃枷肜?#xff0c;它認(rèn)為所有東西都是對(duì)象,這些東西它都至少都屬于某一個(gè)類,這就是萬(wàn)物皆對(duì)象,萬(wàn)物皆可歸類。
那有了面向過(guò)程以后,為什么還要出現(xiàn)面向?qū)ο竽?#xff1f;這種思想有什么好處?
2、面向?qū)ο蠛兔嫦蜻^(guò)程對(duì)比
(1)、面向?qū)ο笫窍鄬?duì)于面向過(guò)程而言的
(2)、面向?qū)ο蠛兔嫦蜻^(guò)程都是一種思想
(3)、面向過(guò)程強(qiáng)調(diào)的是功能行為
(4)、面向?qū)ο笫菍⒐δ苄袨榉庋b進(jìn)對(duì)象,強(qiáng)調(diào)的是具備了功能的對(duì)象
為了更清晰直觀的理解它倆的區(qū)別,下面舉個(gè)經(jīng)典的例子:把大象放進(jìn)冰箱需要幾步
左邊就是經(jīng)典的面向過(guò)程的思想,它是強(qiáng)調(diào)打開(kāi),存儲(chǔ),關(guān)閉的每一個(gè)具體的動(dòng)作。
右邊是面向?qū)ο蟮乃枷?#xff0c;它是強(qiáng)調(diào)先把打開(kāi),存儲(chǔ),關(guān)閉這些動(dòng)作封裝到冰箱里,然后搞一個(gè)冰箱對(duì)象,然后調(diào)用對(duì)象的動(dòng)作
面相對(duì)象這么做有什么好處呢?
大家可以想想,之前面向過(guò)程的時(shí)候你需要面向許許多多具體的方法函數(shù)一個(gè)一個(gè)去調(diào)用它們;
現(xiàn)在面向?qū)ο竽?#xff1f;你只需要找到某個(gè)對(duì)象,你只需要面向一個(gè)對(duì)象就好了,調(diào)用它的方法就搞定了。
3、類與對(duì)象的關(guān)系
類:是對(duì)某一類具有共同特征的事物的描述;
對(duì)象:就是這類事物實(shí)實(shí)在在存在的個(gè)體,是根據(jù)類產(chǎn)生出的具體實(shí)例。
那思考一個(gè)問(wèn)題,是先有類還是先有對(duì)象啊?
這個(gè)問(wèn)題怎么回答都對(duì),如果你說(shuō)先有類后有對(duì)象,這是從計(jì)算機(jī)編程語(yǔ)言角度去說(shuō)的;
如果你說(shuō)先有對(duì)象后有類,這是從現(xiàn)實(shí)生活中去說(shuō)的,因?yàn)槭乾F(xiàn)有了生活中實(shí)實(shí)在在的事物,我們才能去歸類對(duì)它進(jìn)行描述。
關(guān)于類和對(duì)象的關(guān)系,我們還是舉例說(shuō)明
現(xiàn)實(shí)生活中的對(duì)象:張三、李四,這兩個(gè)學(xué)生
我們要描述他們:提取對(duì)象中共性的內(nèi)容,對(duì)具體的對(duì)象進(jìn)行抽象
描述時(shí)發(fā)現(xiàn)這些對(duì)象的共有特性有:姓名、年齡、性別、會(huì)寫(xiě)字,會(huì)學(xué)習(xí)技能等等,這些特征就可以描述出學(xué)生這一類事物
但是張三、李四,這些實(shí)實(shí)在在存在的個(gè)體,他們又有不同的姓名、年齡、性別等
映射到Java中,上邊的“描述”就是用class關(guān)鍵字定義的類;
上邊的“對(duì)象”就是對(duì)應(yīng)Java在堆內(nèi)存中用new關(guān)鍵字建立的實(shí)體。
下面用代碼簡(jiǎn)單的體現(xiàn)一下
package com.cj.study.object;
//通過(guò)class來(lái)描述student學(xué)生類
public class Student {
private String name;
private int age;
private String sex;
public Student(){}
public Student(String name,int age,String sex){
this.name = name;
this.age = age;
this.sex = sex;
}
public void write(){
System.out.println("寫(xiě)字。。。");
}
public void study(){
System.out.println("學(xué)習(xí)。。。");
}
}
package com.cj.study.object;
public class StudentTest {
public static void main(String[] args) {
//通過(guò)new在堆內(nèi)存中產(chǎn)生對(duì)象實(shí)例
Student zhangsan = new Student("張三",18,"男");
Student lisi = new Student("李四",20,"女");
//有了對(duì)象以后,可以調(diào)用對(duì)象的方法
zhangsan.write();
zhangsan.study();
lisi.write();
lisi.study();
}
}
以上就是對(duì)面向?qū)ο蟮囊恍├斫夂涂偨Y(jié)
大概了解了面向?qū)ο笫窃趺椿厥潞?#xff0c;后邊會(huì)陸陸續(xù)續(xù)的講一下面向?qū)ο蟮膸讉€(gè)特性:封裝、繼承、多態(tài)、抽象
總結(jié)
以上是生活随笔為你收集整理的大白话系列之java_大白话系列之——Java的面向对象思想的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java插件获取首选项_Eclipse
- 下一篇: java定义dll文件位置,生成网站时如