學(xué)習(xí)面向?qū)ο髢?nèi)容的三條主線
? Java 類及類的成員
:(重點(diǎn))屬性、方法、構(gòu)造器;(熟悉)代碼塊、內(nèi)部類
? 面向?qū)ο蟮奶卣?/code>:封裝、繼承、多態(tài)、(抽象)
? 其他關(guān)鍵字的使用
:this、super、package、import、static、final、interface、
abstract 等
程序設(shè)計(jì)的思路
面向?qū)ο螅擒浖_發(fā)中的一類編程風(fēng)格、開發(fā)范式。除了面向?qū)ο?,還有面向
過程、指令式編程和函數(shù)式編程。在所有的編程范式中,我們接觸最多的還是面
向過程和面向?qū)ο髢煞N。
1. 面向?qū)ο缶幊谈攀?了解)
在學(xué)習(xí)面向?qū)ο笾?,我們可以先了解一下面向過程。
面向過程是一種編程思想,它強(qiáng)調(diào)的是過程,意思是我們做任何事,都需要親力親為。
面向?qū)ο笠彩且环N編程思想,相對于面向過程,我們的身份可以由原來問題的執(zhí)行者變?yōu)橹笓]者,進(jìn)而把生活中很多復(fù)雜的問題變得簡單化。
面向過程強(qiáng)調(diào)的是過程
,比如,把大象裝冰箱,一共分3步:
第1步:打開冰箱門
第2步:把大象放進(jìn)去
第3步:關(guān)上冰箱門
而面向?qū)ο髲?qiáng)調(diào)的是結(jié)果
,比如:
誰負(fù)責(zé)把大象裝進(jìn)去?
有沒有發(fā)現(xiàn),如果是面向?qū)ο蟮脑挘蛇@件事的主體并不是你自己,你變成了一個(gè)指揮者?
再比如,衣服臟了,我們可以讓女盆友幫忙洗,不需要關(guān)注中間過程是怎么洗的,就可以拿到干凈的衣服,當(dāng)然,這首先需要有一個(gè)對象(加油哦)~
還有,當(dāng)我們想吃一道菜,其實(shí)并不需考慮這道菜是怎么做的,怎么送達(dá)的,只需點(diǎn)菜即可.傳菜和做菜都有具體的對象來完成具體的功能.我們不需要關(guān)注實(shí)現(xiàn)的過程,只需要關(guān)注結(jié)果就好。
這就是我們所說的面向?qū)ο蟮木幊趟枷耄∣OP,Object Oriented Programming)
2 面向?qū)ο蟮娜筇卣?/h4>
封裝: 把相關(guān)的數(shù)據(jù)封裝成一個(gè)“類”組件
繼承: 是子類自動(dòng)共享父類屬性和方法,這是類之間的一種關(guān)系
多態(tài): 增強(qiáng)軟件的靈活性和重用性
類的概述
面向?qū)ο蟪绦蛟O(shè)計(jì)的重點(diǎn)是類的設(shè)計(jì)
類是一類事物抽取屬性與功能形成的。
現(xiàn)實(shí)世界的生物體,大到鯨魚,小到螞蟻,都是由最基本的細(xì)胞構(gòu)成的。同理,Java 代碼
世界是由諸多個(gè)不同功能的類構(gòu)成的。
Java 中用類 class 來描述事物也是如此。類,是一組相關(guān)屬性和行為的集合,這也是類最
基本的兩個(gè)成員。
屬性:該類事物的狀態(tài)信息。對應(yīng)類中的成員變量
行為:該類事物要做什么操作,或者基于事物的狀態(tài)能做什么。對應(yīng)類中的成員方法
3.2 對象
每個(gè)對象具有三個(gè)特點(diǎn):對象的屬性,對象的功能和對象的標(biāo)識。
對象的屬性用來描述對象的基本特征。
對象的功能用來描述對象的可以完成的操作。
對象的標(biāo)識是指每個(gè)對象在內(nèi)存中都有一個(gè)唯一的地址值用于與其他對象進(jìn)行區(qū)分,類似于我們的身份證號。
3.3 類和對象的關(guān)系
我們先創(chuàng)建類,再通過類創(chuàng)建出對象
我們可以通過一個(gè)類創(chuàng)建出多個(gè)對象
類是抽象的,對象是具體的
類就像設(shè)計(jì)圖紙,而對象就是具體的事物
步驟 1:類的定義
類的定義使用關(guān)鍵字:class。格式如下:
[修飾符] class 類名{
屬性聲明;
方法聲明;
}
步驟 2:對象的創(chuàng)建
創(chuàng)建對象,使用關(guān)鍵字:new
創(chuàng)建對象語法:方式一:
類名 對象名 = new 類名();方式 2:
new 類名() //也稱為匿名對象
3.4 練習(xí):類的創(chuàng)建使用
手機(jī)的屬性:顏色,尺寸,品牌,價(jià)格
手機(jī)的功能功能:打電話,發(fā)短信,聽音樂
package cn.tedu.oop;
/**本類用作面向?qū)ο笕腴T案例
* 設(shè)計(jì)手機(jī)這一類事物:
* 分析屬性:品牌 價(jià)格 尺寸 顏色
* 分析功能:打電話 發(fā)短信 看直播*/
/**在一個(gè)java文件中可以寫多個(gè)class,但是,被public修飾的class只能有一個(gè)
* 而且要求這個(gè)公共類的名字必須與文件的名字保持一致*/
public class TestCreateClass {
public static void main(String[] args) {
//help-findAction 或者 Alt+7
//4.創(chuàng)建手機(jī)類的對象p1
Phone p1 = new Phone();
//5.通過手機(jī)類對象調(diào)用手機(jī)類的功能
p1.call();
p1.message();
p1.video();
//6.通過手機(jī)類對象打印查看屬性值
System.out.println(p1.color);//null
System.out.println(p1.price);//0.0
System.out.println(p1.size);//0.0
System.out.println(p1.brand);//null
}
}
//1.通過class關(guān)鍵字創(chuàng)建手機(jī)類--用來描述手機(jī)這一類事物--屬性+功能
class Phone{
//2.定義手機(jī)類的屬性--用成員變量來描述--位置:類里方法外
String brand;//品牌
double price;//價(jià)格
double size;//尺寸
String color;//顏色
//3.定義手機(jī)類的功能--用方法來描述--格式:修飾符 返回值類型 方法名(參數(shù)列表){方法體}
public void call(){
System.out.println("正在打電話~");
}
public void message(){
System.out.println("正在發(fā)短信!");
}
public void video(){
System.out.println("正在看直播~");
}
}
3.5 對象在內(nèi)存中的存儲
Java把內(nèi)存分成5大區(qū)域,我們重點(diǎn)關(guān)注棧和堆。
一般來講局部變量存在棧中,方法執(zhí)行完畢內(nèi)存就被釋放
對象(new出來的東西)存在堆中,對象不再被使用時(shí),內(nèi)存才會被釋放
每個(gè)堆內(nèi)存的元素都有地址值
對象中的屬性都是成員變量,是有默認(rèn)值的
TIPS: 棧與隊(duì)列指的是一種數(shù)據(jù)的結(jié)構(gòu)。
棧:先進(jìn)后出(FILO – First In Last Out)
隊(duì)列:先進(jìn)先出(FIFO – First In First Out)
對象的創(chuàng)建過程分析:
Phone p = new Phone(); 這句代碼,再內(nèi)存中會發(fā)生什么呢?
1.在棧內(nèi)存中開辟一塊空間,存放引用類型Phone類型的變量p
2.在堆內(nèi)存中開辟一塊空間,存放Phone類型的對象
3.要給這個(gè)對象進(jìn)行初始化,比如:String brand = null;
4.當(dāng)對象準(zhǔn)備好以后,會生成一個(gè)唯一的地址值,然后將此地址值交給引用類型的變量p來保存
5.如果以后想要操作此對象的各種資源,可以通過p變量保存的地址值找到該對象,比如:p.call(); p.price = 66.6;
3.6 練習(xí)2:創(chuàng)建多個(gè)對象文章來源:http://www.zghlxwxcb.cn/news/detail-481797.html
package cn.tedu.oop;
/**本類用作面向?qū)ο笕腴T案例
* 設(shè)計(jì)手機(jī)這一類事物:
* 分析屬性:品牌 價(jià)格 尺寸 顏色
* 分析功能:打電話 發(fā)短信 看直播*/
/**在一個(gè)java文件中可以寫多個(gè)class`,但是,被public修飾的class只能有一個(gè)
* 而且要求這個(gè)公共類的名字必須與文件的名字保持一致*/
public class TestCreateClass {
public static void main(String[] args) {
//help-findAction 或者 Alt+7
//4.創(chuàng)建手機(jī)類的對象p1
Phone p1 = new Phone();
//5.通過手機(jī)類對象調(diào)用手機(jī)類的功能
p1.call();
p1.message();
p1.video();
//6.通過手機(jī)類對象打印查看屬性值
System.out.println(p1.color);//null
System.out.println(p1.price);//0.0
System.out.println(p1.size);//0.0
System.out.println(p1.brand);//null
//7.創(chuàng)建手機(jī)類的第2個(gè)對象p2
Phone p2 = new Phone();
//8.通過p2對象,調(diào)用Phone類的3個(gè)方法
p2.call();
p2.message();
p2.video();
//9.給p2對象的4個(gè)屬性賦值
p2.brand = "HUAWEI";
p2.color = "中國紅";
p2.price = 6666.66;
p2.size = 5.6;
//10.打印查看p2對象的4個(gè)屬性值
System.out.println(p2.brand);
System.out.println(p2.price);
System.out.println(p2.color);
System.out.println(p2.size);
//11.查看兩個(gè)對象的地址值
System.out.println(p1);//cn.tedu.oop.Phone@1b6d3586
System.out.println(p2);//cn.tedu.oop.Phone@4554617c
}
}
//1.通過class關(guān)鍵字創(chuàng)建手機(jī)類--用來描述手機(jī)這一類事物--屬性+功能
class Phone{
//2.定義手機(jī)類的屬性--用成員變量來描述--位置:類里方法外
String brand;//品牌
double price;//價(jià)格
double size;//尺寸
String color;//顏色
//3.定義手機(jī)類的功能--用方法來描述--格式:修飾符 返回值類型 方法名(參數(shù)列表){方法體}
public void call(){
System.out.println("正在打電話~");
}
public void message(){
System.out.println("正在發(fā)短信!");
}
public void video(){
System.out.println("正在看直播~");
}
}
文章來源地址http://www.zghlxwxcb.cn/news/detail-481797.html
到了這里,關(guān)于面向?qū)ο蟮慕榻B和內(nèi)存的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!