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