Java 面向?qū)ο蟮奶卣鹘馕雠c應(yīng)用
## 類和對(duì)象
* 面向?qū)ο笈c面向過(guò)程
面向過(guò)程:是指類似在C語(yǔ)言學(xué)習(xí)中,所寫(xiě)的代碼都在主程序(main())中運(yùn)行,非常的繁瑣。
面向?qū)ο螅菏紫葎?chuàng)建一個(gè)類,類中包括對(duì)一個(gè)事物描述的性質(zhì)(成員變量)和方法(成員方法)。
面向?qū)ο笫侵笇?duì)一個(gè)事物的描述。
eg:對(duì)一個(gè)手機(jī)進(jìn)行描述,創(chuàng)建一個(gè)名為phone的類。
passage ...; public class phone { //成員變量 String name; double price; String color; //成員方法 call(String name ) game(String playname) }
## 兩種常見(jiàn)的方法
* 方法重載
指的是當(dāng)聲明了成員變量之后,隊(duì)成員變量進(jìn)行賦值的兩種方法:
初始化:
double x; double y; MethodOveringLoading() { x=1.2; y=0.0; }
//方法重載 //可以通過(guò)自己想要的對(duì)成員變量進(jìn)行定義 MethodOverLoading(double a,double b) { x=a; y=b; }
綜上可以看出為什么會(huì)出現(xiàn)方法重載這個(gè)概念?
就是因?yàn)閷?duì)于一個(gè)類中的成員變量一般都是沒(méi)有初始化的,當(dāng)程序員想要根據(jù)實(shí)際問(wèn)題進(jìn)行設(shè)定時(shí),就出現(xiàn)了方法重載這個(gè)概念。
* 參數(shù)個(gè)數(shù)可變方法
現(xiàn)在我們?cè)賮?lái)看一個(gè)成員方法的例子:
//求和 public int sum(int a,int b) { return a+b; }
問(wèn)題是當(dāng)我們輸入兩個(gè)數(shù)值時(shí),只進(jìn)行的2個(gè)數(shù)的求和,這里我們就可以用到參數(shù)個(gè)數(shù)可變的方法;
public int sum(int ...arg) { int sum=0; for(int a:arg) { sum+=a; } return sum; } public static void main(String[] args) { System.out,print(sum(1,2,3))//輸出結(jié)果為6; }
這里需要注意的是一般情況下所輸入的參數(shù)都為相同類型的,但也可以輸入不同類型的參數(shù)。
public int sum(double a,int ...arg)//true public int sum(double a,int ...arg)//false
* 遞歸方法
函數(shù)調(diào)用函數(shù)的方法。~暫時(shí)還想不出啥好的例子,以后再補(bǔ)充。
## 在程序運(yùn)行過(guò)程中的內(nèi)存分配
* 類的引用
* 相同包內(nèi)class的引用
這種情況下不需要進(jìn)行對(duì)類聲明;
* 不同包內(nèi)class的引用
聲明所引用類的位置:import packagename.classname
;//包名.類名
* 內(nèi)存分配
在程序運(yùn)行的過(guò)程中內(nèi)存分成三個(gè)區(qū)域,
棧(Stack)、堆(Heap)、方法區(qū)(Method Area)
開(kāi)始時(shí)所引用的類都放在一個(gè)叫做方法區(qū)的地方,當(dāng)然不是包中所有的類在程序運(yùn)行時(shí)都會(huì)被調(diào)用,這就需要一個(gè)地方區(qū)分那些被用到而那些類沒(méi)有被用到,這個(gè)地方就是堆,但堆并不是將類中所有的信息都拿過(guò)來(lái),而是只拿了類中成員變量和成員方法在方法區(qū)中位置。當(dāng)在main函數(shù)中輸入Phone one=new Phone()時(shí),這里的one是新new出來(lái)的一個(gè)對(duì)象,one接收到的是一個(gè)地址(Phone這個(gè)類所在堆中的地址信息),在后面的調(diào)用中只需要輸入one.***就可以對(duì)類中成員方法和成員變量進(jìn)行調(diào)用。
one_dyas
到此這篇關(guān)于Java 面向?qū)ο蟮奶卣鹘馕雠c應(yīng)用的文章就介紹到這了,更多相關(guān)Java 面向?qū)ο髢?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Spring Initializr方式如何快速構(gòu)建Spring Boot項(xiàng)目
Spring lnitializr是一個(gè)Web應(yīng)用,它提供了一個(gè)基本的項(xiàng)目結(jié)構(gòu),能夠幫助我們快速構(gòu)建一個(gè)基礎(chǔ)的Spring Boot項(xiàng)目,本文分步驟講解如何使用Spring Initializr方式構(gòu)建Spring Boot項(xiàng)目,感興趣的朋友跟隨小編一起看看吧2023-08-08詳解Spring?@Lazy注解為什么能破解死循環(huán)
這篇文章主要來(lái)和大家探討一下Spring中的@Lazy注解為什么能破解死循環(huán),文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,需要的可以了解一下2023-07-07JDK源碼分析之String、StringBuilder和StringBuffer
這篇文章主要給大家介紹了關(guān)于JDK源碼分析之String、StringBuilder和StringBuffer的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用jdk具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-05-05劍指Offer之Java算法習(xí)題精講二叉樹(shù)與鏈表
跟著思路走,之后從簡(jiǎn)單題入手,反復(fù)去看,做過(guò)之后可能會(huì)忘記,之后再做一次,記不住就反復(fù)做,反復(fù)尋求思路和規(guī)律,慢慢積累就會(huì)發(fā)現(xiàn)質(zhì)的變化2022-03-03springboot redis使用lettuce配置多數(shù)據(jù)源的實(shí)現(xiàn)
這篇文章主要介紹了springboot redis使用lettuce配置多數(shù)據(jù)源的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04