您好,登錄后才能下訂單哦!
這篇“Java面向?qū)ο筇攸c與使用方法是什么”文章的知識點大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Java面向?qū)ο筇攸c與使用方法是什么”文章吧。
面向過程:當事件比較簡單的時候,利用面向過程,注重的是事件的具體步驟和過程,注重的是過程中的具體行為,以函數(shù)為最小單位,考慮怎么做。
面向?qū)ο螅鹤⒅卣摇皡⑴c者”,將功能封裝進對象中,強調(diào)具備了功能的對象,以類/對象為最小單位,考慮誰來做。
案例:小明從冰箱里拿東西
面向過程:
面向?qū)ο?
面向過程 —> 面向?qū)ο?, 其實就是由執(zhí)行者 —> 指揮者的 一個過渡
萬物皆對象
對象:具體的事物,具體的實體,具體的實例,模板下具體的產(chǎn)品
類:對對象向上抽取出像的部分,公布部分,形成類,類是抽象的,是一個模板,一般在寫代碼的時候先寫類,然后再根據(jù)類創(chuàng)建對應的對象
類是對象的抽象,對象是類的實例化
1.屬性(field 成員變量)
屬性用于定義該類或該類對象包含的數(shù)據(jù)或者說靜態(tài)特征。屬性作用范圍是整個類體。
屬性定義格式:
[修飾符] 屬性類型 屬性名 = [默認值];
2.方法
方法用于定義該類或該類實例的行為特征和功能實現(xiàn)。方法是類和對象行為特征的抽象。方法很類似于面向過程中的函數(shù)。面向過程中,函數(shù)是最基本單位,整個程序由一個個函數(shù)調(diào)用組成。面向?qū)ο笾?,整個程序的基本單位是類,方法是從屬于類和對象的。
方法定義格式:
[修飾符] 方法返回類型 方法名(形參列表){
//Java語句
}
我們以上面王者榮耀英雄類創(chuàng)建為例:
//創(chuàng)建英雄類 public class Hero { //屬性 String Name;//英雄姓名 int Survive;//生存能力 int Attack;//攻擊傷害 int Skill;//技能效果 int Difficulty;//上手難度 //技能 public void Kill(int number){ //根據(jù)輸入的數(shù)字釋放幾技能 System.out.println(Name+"釋放"+number+"技能?。?!"); } //輸出該英雄的屬性 public void print(){ System.out.println("英雄:"+Name); System.out.println("生存能力:"+Survive); System.out.println("攻擊傷害:"+Attack); System.out.println("技能效果:"+Skill); System.out.println("上手難度:"+Difficulty); } }
接下來我們對我們創(chuàng)建好的類來創(chuàng)建對象
public class TestCode01 { //main方法,程序的入口 public static void main(String[] args) { //創(chuàng)建一個對象(英雄)-->馬克波羅 Hero make = new Hero(); make.Name = "馬克波羅"; make.Survive = 4; make.Attack = 6; make.Skill = 6; make.Difficulty = 5; //再創(chuàng)建一個英雄-->瀾 Hero lan = new Hero(); lan.Name = "瀾"; lan.Survive = 3; lan.Attack = 5; lan.Skill = 4; lan.Difficulty = 6; lan.Kill(1); //輸出兩個英雄的屬性 make.print(); System.out.println("-------------"); lan.print(); //釋放技能 make.Kill(3); System.out.println("-------------"); lan.Kill(2); } }
結(jié)果: 每個英雄都有相同的屬性,每個屬性又有不同的值,通過類我們可以創(chuàng)建很多個對象,每個對象又有不同的屬性值。
比如:王者里的一百多個英雄,每個都有不同的特點。
創(chuàng)建對象的過程:
(1)在第一次遇到一個類的時候,對這個類要進行加載,只加載一次。
(2)創(chuàng)建對象,在堆中開辟空間
(3)對對象進行初始化操作,屬性賦值都是默認的初始值。
(4)new關(guān)鍵字調(diào)用構(gòu)造器,執(zhí)行構(gòu)造方法,在構(gòu)造器中對屬性重新進行賦值
對象都是new出來的,new關(guān)鍵字實際上在調(diào)用一個方法,這個方法叫做構(gòu)造方法(構(gòu)造器)
調(diào)用構(gòu)造器的時候,如果你的類中沒有寫構(gòu)造器,那么系統(tǒng)會默認給你分配一個構(gòu)造器(空構(gòu)造器)
構(gòu)造方法格式:
[修飾符] 構(gòu)造器名字(){
}
構(gòu)造器和方法的區(qū)別:
沒有方法的返回值
方法體內(nèi)部不能有return語句
構(gòu)造器的名字很特殊,必須跟類名一致
構(gòu)造器的作用:不是為了創(chuàng)建對象,因為在調(diào)用構(gòu)造器之前,這個對象就已經(jīng)創(chuàng)建好了,并且屬性有默認的初始化的值。
調(diào)用構(gòu)造器的目的是給屬性進行賦值操作的。
注意:我們一般不會在空構(gòu)造器中進行初始化操作,因為那樣的話每個對象的屬性就一樣了。
下面例子:
class Hero{ //屬性 String Name;//英雄姓名 int Survive;//生存能力 int Attack;//攻擊傷害 int Skill;//技能效果 int Difficulty;//上手難度 public Hero(){ Survive=4; Attack=5; Skill=6; Difficulty=7; } public void print(){ System.out.println("英雄:"+Name); System.out.println("生存能力:"+Survive); System.out.println("攻擊傷害:"+Attack); System.out.println("技能效果:"+Skill); System.out.println("上手難度:"+Difficulty); } } public class TestCode01 { public static void main(String[] args) { //創(chuàng)建兩個英雄對象 Hero make = new Hero(); make.Name="馬克"; Hero lan=new Hero(); lan.Name="瀾"; //輸出兩個屬性 make.print(); lan.print(); } }
因為我們在構(gòu)造器里面賦值了,所以我們創(chuàng)建對象的時候?qū)傩跃鸵粯恿?/p>
實際上,我們只要保證空構(gòu)造器的存在就可以了,里面的東西不用寫,我們要用構(gòu)造器賦值就要對構(gòu)造器重載
一般保證空構(gòu)造器的存在,空構(gòu)造器中一般不會進行屬性的賦值操作
一般我們會重載構(gòu)造器,在重載的構(gòu)造器中進行屬性賦值操作
在重載構(gòu)造器以后,假如空構(gòu)造器忘寫了,系統(tǒng)也不會給你分配默認的空構(gòu)造器了,那么你要調(diào)用的話就會出錯了。所以我們重載構(gòu)造器時,一般要保留默認構(gòu)造器
當形參名字和屬性名字重名的時候,會出現(xiàn)就近原則:在要表示對象的屬性前加上this.來修飾 ,因為this代表的就是你創(chuàng)建的那個對象
this就是指當前的對象
this可以修飾屬性
當屬性名字和形參發(fā)生重名的時候,或者 屬性名字 和局部變量重名的時候,都會發(fā)生就近原則,所以如果我要是直接使用變量名字的話就指的是離的近的那個形參或者局部變量,這時候如果我想要表示屬性的話,在前面要加上:this.修飾(如果不發(fā)生重名問題的話,實際上你要是訪問屬性也可以省略this.)
this修飾方法
在同一個類中,方法可以互相調(diào)用,this.可以省略不寫。
this可以修飾構(gòu)造器
同一個類中的構(gòu)造器可以相互用this調(diào)用,注意:this修飾構(gòu)造器必須放在第一行
static可以修飾:屬性、方法、代碼塊、內(nèi)部類
static修飾屬性
在類加載的時候,會將靜態(tài)內(nèi)容也加載到方法區(qū)的靜態(tài)域中,靜態(tài)的內(nèi)容先于對象存在,并且這個靜態(tài)內(nèi)容被所有該類的對象共享。
在類加載的時候一起加載入方法區(qū)中的靜態(tài)域中
先于對象存在
訪問方式: 對象名.屬性名 類名.屬性名(推薦)
static修飾屬性的應用場景:某些特定的數(shù)據(jù)想要在內(nèi)存中共享,只有一塊 -->這個情況下,就可以用static修飾的屬性。
static修飾方法:
static和public都是修飾符,并列的沒有先后順序,先寫誰后寫誰都行
在靜態(tài)方法中不能使用this關(guān)鍵字
在靜態(tài)方法中不能訪問非靜態(tài)的方法
在靜態(tài)方法中不能訪問非靜態(tài)的屬性
靜態(tài)的方法可以用 對象名.方法名去調(diào)用 也可以 用 類名.方法名 (推薦)
在同一個類中可以直接調(diào)用靜態(tài)方法
代碼塊的分類: 普通塊、構(gòu)造塊、靜態(tài)塊、同步塊(多線程)
代碼塊執(zhí)行順序: 最先執(zhí)行靜態(tài)塊–>再執(zhí)行構(gòu)造塊,(不常用)–>再執(zhí)行構(gòu)造器–>再執(zhí)行方法中的普通塊
public class Test { //屬性 int a; static int sa; //方法 public void a(){ System.out.println("-----a"); { //普通塊限制了局部變量的作用范圍 System.out.println("這是普通塊"); System.out.println("----000000"); int num = 10; System.out.println(num); } } public static void b(){ System.out.println("------b"); } //構(gòu)造塊 { System.out.println("------這是構(gòu)造塊"); } //靜態(tài)塊 static{ System.out.println("-----這是靜態(tài)塊"); //在靜態(tài)塊中只能方法:靜態(tài)屬性,靜態(tài)方法 System.out.println(sa); b(); } //構(gòu)造器 public Test(){ System.out.println("這是空構(gòu)造器"); } public Test(int a){ this.a = a; } //這是一個main方法,是程序的入口: public static void main(String[] args) { Test t = new Test(); t.a(); Test t2 = new Test(); t2.a(); } }
包的作用: 為了解決重名的作用,解決權(quán)限問題
包名的定義:
名字全部小寫
中間用.隔開
一般都是公司域名倒著寫:com.jd 、com.taobao
加上模塊名字 :com.taobao.login
不能使用系統(tǒng)中的關(guān)鍵字:null
包聲明的位置一般都在非注釋代碼的第一行
導包:
(1)使用不同包下的類要需要導包, 例如:import java.util.Date;
(2)在導包以后,還想用其他包下同名的類,就必須要手動自己寫所在的包。
(3)同一個包下的類想使用不需要導包,可以直接使用。
(4)在java.lang
包下的類,可以直接使用無需導包
(5)可以直接導入*
:
靜態(tài)導入:
//靜態(tài)導入: import static java.lang.Math.*; //導入:java.lang下的Math類中的所有靜態(tài)的內(nèi)容 public class Test { //這是一個main方法,是程序的入口: public static void main(String[] args) { System.out.println(random()); System.out.println(PI); System.out.println(round(5.6)); } //在靜態(tài)導入后,同一個類中有相同的方法的時候,會優(yōu)先走自己定義的方法。 public static int round(double a){ return 1000; } }
以上就是關(guān)于“Java面向?qū)ο筇攸c與使用方法是什么”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。