目錄
1.類與對象
2.類與對象的區(qū)別與聯(lián)系
3.對象在JVM內存中的存在形式(重要)
4.屬性/成員變量/字段
5.如何創(chuàng)建對象
6.類和對象的內存分配機制
7.面向對象的三大特征?
8.面向對象和面向過程?
9.匿名對象
10.方法(method)
11.方法的重載(overload)
12.可變形參
13.遞歸
14.封裝
15.四種訪問權限修飾符
16.構造器
17.什么是javaBean
18.this是什么?
19.package和import
1.類與對象
拋磚引玉,一個小動物的問題引出類與對象:小明養(yǎng)了兩只小狗狗,一只名字叫小黑,今年2歲,黑色。還有一只叫小白,4歲,白色。輸入小狗名字就顯示狗狗的名字,年齡,顏色。如果輸入的名字錯誤,就顯示沒有這個狗狗。
- 使用現(xiàn)有的技術解決:
- 定義變量方式解決
- 使用數(shù)組解決
- 使用這兩個技術解決問題的痛點:
- 不利于數(shù)據(jù)的管理,效率低。所以Java設計者引入了類與對象的概念,解決新的需求。
- 代碼:
public class Object01{ //小明養(yǎng)了兩只小狗狗,一只名字叫小黑,今年2歲,黑色。還有一只叫小白,4歲,白色。 //輸入小狗名字就顯示狗狗的名字,年齡,顏色。如果輸入的名字錯誤,就顯示沒有這個狗狗。 public static void main(String[] args){ //如何使用面向對象(OOP)解決 //1.創(chuàng)建一只狗狗對象(實例化) new Cat(); //Dog dog1 = new Dog(); 把創(chuàng)建的狗狗賦給cat1 //dog1就是一個對象了 //創(chuàng)建第一只狗狗 Dog dog1 = new Dog(); dog1.name = "小黑"; dog1.age = 2; dog1.color = "黑色"; //創(chuàng)建第二只狗狗 Dog dog2 = new Dog(); dog2.name = "小白"; dog2.age = 4; dog2.color = "白色"; System.out.println("第一只狗狗的信息:"+dog1.name+","+dog1.age+"歲,"+dog1.color); System.out.println("第二只狗狗的信息:"+dog2.name+","+dog2.age+"歲,"+dog2.color); } } //定義狗狗類 class dog{ String name; int age; String color; }
2.類與對象的區(qū)別與聯(lián)系
-
?類是抽象的,是概念,代表一類事物,如動物,植物等...
-
對象是具體的,實際的,代表一個具體的事務。
-
類是對象的模板,對象是類其中的一個實例。
3.對象在JVM內存中的存在形式(重要)
4.屬性/成員變量/字段
?從概念或叫法上看:成員變量 = 屬性 = field(字段)
屬性是一個類的組成部分,一般是基本數(shù)據(jù)類型,也可以是引用數(shù)據(jù)類型。
注意事項:
- 屬性的定義語法同變量。例如:訪問修飾符? 屬性類型? ?屬性名;
訪問修飾符有四種:public、proctected、默認、private - 屬性的定義的類型可以是基本數(shù)據(jù)類型或引用數(shù)據(jù)類型。
- 屬性不賦值,有默認值。
byte 0? short 0? int 0? long 0? flout 0.0? double 0.0? boolean false? String null? ?char \u0000
5.如何創(chuàng)建對象
- ?先聲明再創(chuàng)建
Cat cat;? //聲明對象cat
cat = new? Cat();? //創(chuàng)建 - 直接創(chuàng)建
Cat cat = new Cat();
如何訪問屬性:
基本語法:對象名.屬性名? ? ?如:cat.name;
6.類和對象的內存分配機制
- Java內存的結構分析
- 棧:一般存放基本數(shù)據(jù)類型(局部變量)
- 堆:存放對象(Cat cat,數(shù)組等)
- 方法區(qū):常量池(常量,如字符串),類加載信息。
7.面向對象的三大特征?
- 繼承:繼承是指一個類(稱為子類或派生類)可以繼承另一個類(稱為父類或基類)的屬性和方法。子類可以重用父類的代碼,并且可以在此基礎上進行擴展或修改。通過繼承,子類可以獲得父類的特性,形成類之間的層次結構。這樣可以提高代碼的可重用性和靈活性,減少重復編寫代碼的工作量。
- 封裝:封裝是將數(shù)據(jù)和對數(shù)據(jù)的操作封裝到一個類中,對外部隱藏具體的實現(xiàn)細節(jié),只對外暴露必要的接口。通過封裝,我們可以控制對數(shù)據(jù)的訪問方式,提供統(tǒng)一的接口來操作數(shù)據(jù),從而提高代碼的可讀性、可維護性和安全性。封裝還有助于實現(xiàn)代碼的模塊化和解耦。
- 多態(tài):多態(tài)是指同一個方法可以在不同的對象上具有不同的行為。在多態(tài)的使用中,我們可以使用父類類型的引用指向子類的對象。通過多態(tài)機制,我們可以實現(xiàn)動態(tài)綁定和運行時的方法調用。多態(tài)提高了代碼的靈活性和可擴展性,使得程序能夠以更加通用和抽象的方式進行編寫。
8.面向對象和面向過程?
面向過程(POP):強調的是功能行為,以函數(shù)為最小的單位,考慮怎么做。
面向對象(OOP):將功能封裝進對象,強調具備了功能的對象,以類\對象為最小單位,考慮誰去做。
9.匿名對象
我們可以不定義對象的句柄,直接調用這個對象的方法。例如:new Cat().start();
注意:如果一個對象的方法只需要一次調用,那么可以使用匿名對象。
10.方法(method)
- 方法是類或者對象的"行為“ ,用來完成某個操作;方法不能獨立存在,必須定義在類中。
- 方法的聲明格式:
訪問修飾符? 返回值類型? 方法名(參數(shù)類型 形參,.....){
? ? ? ? ?方法體;
? ? ? ? return? 返回值;(返回值類型void,沒有返回值) - }
- 舉例:
public class Car{ private int age; public int getAge(){ return age; } }
注意事項:
- 方法被調用一次就會執(zhí)行一次。
- 沒有具體返回值的情況,返回值類型用void,方法體就不必用return。
- 不可用在方法內部定義方法。?
11.方法的重載(overload)
重載就是允許存在一個以上的同名方法,只要他們參數(shù)個數(shù)或類型不同。
特點:
與返回值類型無關,參數(shù)列表不同。
例如:
int? add(int a,int b){return a+b;}
int add(int a){return x;}
int add(float a,float b){return a+b;}
12.可變形參
JDK5以前采用數(shù)組形參來定義方法,傳入多個同類型的變量
public static void test(int a,String[] aa);
JDK5以后采用可變個數(shù)形參來定義方法
public static void test(int a, String...aa);
注意:
- 聲明格式:方法名(參數(shù)類型名...參數(shù)名)。
- 可變參數(shù):方法參數(shù)部分指定類型的參數(shù)個數(shù)是可變多個:0個,1個或多個。
- 可變個數(shù)形參的方法與同名方法之間彼此構成重載。?
- 可變參數(shù)方法的使用與方法參數(shù)部分使用數(shù)組一致。
- 同一個方法的形參上只能聲明一個可變參數(shù)。
13.遞歸
?簡單來說就是一個方法體調用它自己。
遞歸方法包含了一種隱式的循環(huán),它會重復執(zhí)行某段代碼。
遞歸一定要向已知的方法遞歸,否則遞歸就變成了無窮遞歸,類似死循環(huán).
舉例:
//計算1--100自然數(shù)的和
public int sum(int num){
? ? ? ? if(num == 1){
? ? ? ? ? ? ? ?return 1;? ? ? ??
????????}else{
? ? ? ? ? ? ? ? return num + sum(num -1)?;? ? ? ?
????????}
}
14.封裝
- ?為什么需要封裝?有什么用?
- 比如我要使用電腦,只需要開機進入系統(tǒng)就能用了,沒有必要了解系統(tǒng)底層或硬件內結構
- 程序設計追求高內聚,低耦合。
- 高內聚是指類的內部數(shù)據(jù)操作細節(jié)自己完成,不允許外部干涉。
- 低耦合:僅對外暴露少量的方法使用。
- 隱藏方法內部,之對外公開簡單的接口。便于外界調用,提高系統(tǒng)的可擴展性,可維護性。
15.四種訪問權限修飾符
class只能使用public,默認
public 類可以在任何地方訪問。
默認類只能被同一個包的類訪問。
16.構造器
構造器的特征:
- 具有類相同的名稱。
- 不聲明返回值類型
- 不能被static,final,synchronized,abstract,native修飾,不能有return語句。
構造器作用:
創(chuàng)建對象,初始化對象
注意:
- Java語言中每個類都有構造器
- 默認構造器的修飾符與類的修飾符一致。
- 一旦顯示定義了構造器,系統(tǒng)不再提供默認構造器。
- 一個類可以創(chuàng)建多個重載的構造器。
- 父類構造器不可被繼承。
屬性賦值的過程:
默認初始化--》顯式初始化--》構造器初始化--》通過"對象.屬性"或"對象.方法"賦值
17.什么是javaBean
- JavaBean是Java寫成的可重用組件。
- 所謂JavaBean指的是符合如下標準的Java類:
- 類是公共的
- 有一個無參的公共構造器
- 有屬性,且有get,set方法
- 用戶可以使用JavaBean將功能,處理,值,數(shù)據(jù)庫訪問和其他任何可以用Java代碼創(chuàng)造的對象進行打包,并且其他的開發(fā)者可以通過內部JSP頁面,Servlet,其他JavaBean,applet程序或者應用來使用這些對象。用戶可以認為javaBean提供了一種隨時可以復制粘貼的功能,而不用關心變化。
舉例:
18.this是什么?
this可以調用類的屬性,方法,構造器。
它可以在方法內部使用,這個方法所屬對象的引用。
在構造器內部使用,表示該構造器正在初始化的對象。
注意:
- 可以在類的構造器使用”this(形參列表)“的方式,調用本類中重載的其他構造器!
- 構造器中不能通過this(形參列表)調用自身構造器
- this(形參列表)必須聲明在類的構造器首行!
- 類的構造器中,最多只能聲明一個this(形參列表)
19.package和import
包(package):
- package語句作為Java源文件的第一條語句,指明該文件中定義的類所在的包
格式:package? 頂層包.子包名; - 包對應于文件系統(tǒng)的目錄,package語句中,用“.”來指明包(目錄)的層次;
- 包通常用小寫單詞標識。
- 包的作用:
- 包可以包含類和子包,劃分項目層次,便于管理
- 解決類命名沖突問題
- 控制訪問權限
導入 (import):
為使用定義在不同包中的Java類,需要用import語句引入指定包層次下所需的類或全部類文章來源:http://www.zghlxwxcb.cn/news/detail-527448.html
語法:import? 包名.類名;文章來源地址http://www.zghlxwxcb.cn/news/detail-527448.html
到了這里,關于【Java入門】-- Java基礎詳解之 [Java面向對象編程(初級)]的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!