日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java探索之旅(6)——对象和类

發(fā)布時(shí)間:2023/12/9 java 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java探索之旅(6)——对象和类 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.知識要點(diǎn)

假設(shè):

public ClassName{int data;String name;ClassName(){data=1;}public static int getdata(){return data;}}</span>

? ??含main()的為主類。多個(gè)類放在一個(gè)文件中,只能有一個(gè)主類。

? ??類可以不定任何構(gòu)造方法(函數(shù)),系統(tǒng)默認(rèn)提供無參構(gòu)造函數(shù)。當(dāng)且僅當(dāng)無任何無參構(gòu)造函數(shù)時(shí)才提供。

? ??構(gòu)造函數(shù)與類同名,無返回類型。

? ?對象聲明:ClassName objectRef=new ClassName(....) ? ? 實(shí)質(zhì)上,obejectRef為一個(gè)包含對ClassName對象的引用變量。即為引用類型,簡稱為ClassName對象。

? ??類似于匿名數(shù)組,也有匿名對象,如new ClassName()就可以直接用于參數(shù)或者輸出。因?yàn)榇藭r(shí)對象不需要引用。

? ??類的數(shù)據(jù)域也可以是引用類型。例如name同樣為String引用類型,倘若其沒有引用任何變量,初始化為null。

? ??Java的類的數(shù)值域,數(shù)值類型默認(rèn)0,引用類型默認(rèn)null,boolean默認(rèn)false,char默認(rèn)‘\u0000’。但是局部變量沒有初始化值,比如在main中不要試圖定義變量,未經(jīng)初始化輸出。

? ??不需要某個(gè)對象的時(shí)候。顯式的賦給null,其之前的引用的對象進(jìn)入垃圾回收機(jī)制。

? ??類似數(shù)組,對象名之間的賦值,后者指向的對象進(jìn)入垃圾回收機(jī)制,Java系統(tǒng)自動的收回所占空間。


2.靜態(tài)變量、常量與方法

? ??靜態(tài)變量(類變量):類的所有實(shí)例共享數(shù)據(jù),存儲在公共地址,某對象修改,其他的對應(yīng)修改。關(guān)鍵字static。可以使用類名(推薦)或者引用變量調(diào)用

? ??常量:關(guān)鍵詞final static。所有類的對象共享。推薦使用類名訪問,增加可讀性。

? ??靜態(tài)方法:靜態(tài)方法在前面添加static關(guān)鍵字。比如常用的Math.random

? 注意:

? ? 靜態(tài)變量和靜態(tài)實(shí)例可以在實(shí)例方法和靜態(tài)方法中使用。相反,實(shí)例方法和實(shí)例變量僅能使用于實(shí)例方法。因?yàn)殪o態(tài)方法、變量不屬于某個(gè)特定的類。 ? ? 所謂實(shí)例方法和實(shí)例變量是依賴具體實(shí)例的,比喻半徑r依賴于某個(gè)圓實(shí)例,getArea()得到圓的面積,也是依賴實(shí)例。倘若不依賴,就可以定義為靜態(tài)方法或者靜態(tài)變量(比如 PI)

package Study_Class; public class MyCircle {double radius;//實(shí)例變量static int j=2;final static double Pi=3.14159;MyCircle(){radius=1.0;}MyCircle(double r){if(r>0) radius=r;else radius=0; }public static void main(String[] args){//int k=j;//錯(cuò)誤!!!,實(shí)例變量不在靜態(tài)方法中使用//getArea();//錯(cuò)誤!!!,實(shí)例方法不能在今天方法中使用MyCircle circle1=new MyCircle(2.0);System.out.println("the area of circle is"+circle1.getArea());//實(shí)例方法使用實(shí)例來調(diào)用 }public double getArea()//實(shí)例方法{return Math.pow(radius, 2)*Pi;}}</pre><pre code_snippet_id="497932" snippet_file_name="blog_20141027_2_2668877" name="code" class="java">

3.publicprivate修飾符以及數(shù)據(jù)域的封裝

? ??類、方法、數(shù)據(jù)域前面有public修飾符,表示可以被任何其他類(通過實(shí)例訪問,某個(gè)public類的public數(shù)據(jù)域和方法)訪問。

? ??如果不帶修飾符。代表可以被同一包類的任何一個(gè)類訪問(包私有)。即,同一個(gè)包的類,可以通過該public類實(shí)例訪問,public類的public類和方法,也通過實(shí)例訪問,不帶修飾符的數(shù)據(jù)域和方法。

? ??不同的包,只能通過實(shí)例訪問,public類的public數(shù)據(jù)域和方法。

? ??僅僅只有類內(nèi)定義的對象,能夠訪問該類的私有方法和私有數(shù)據(jù)。包內(nèi),其他類都不可以。如果為了限制用戶創(chuàng)造實(shí)例,可將構(gòu)造方法限定為私有。

? ??對于私有數(shù)據(jù),可以用public接口方法(函數(shù))修改。為了避免數(shù)據(jù)被篡改,推薦數(shù)據(jù)域聲明為私有。

簡而言之:

pravite限制訪問權(quán)限在類內(nèi),默認(rèn)修飾符限制訪問權(quán)限在包內(nèi),public沒有限定權(quán)限。

package Study_Class; public class MyCircle {private double radius;//實(shí)例變量static int numberofObject=0;final static double Pi=3.14159;MyCircle(){radius=1.0;numberofObject++;}MyCircle(double r){if(r>0) radius=r;else radius=0;numberofObject++;}public void setRidus(double r){if(r>0) radius=r;else radius=0; }public void getArea()//實(shí)例方法{System.out.println("The area is --- "+Math.pow(radius, 2)*Pi);}void gerRadius(){System.out.println("The radius is--- "+radius);} }

? ?在同一個(gè)包內(nèi)使用上面定義的類如下:

package Study_Class; public class testCircle//同一個(gè)包類調(diào)用MyCircle類 {public static void main(String[] args){MyCircle circle1=new MyCircle(2.0);circle1.gerRadius();//無修飾符的方法circle1.getArea();//實(shí)例方法使用實(shí)例來調(diào)用circle1.setRidus(3.5);circle1.gerRadius();circle1.getArea();//實(shí)例方法使用實(shí)例來調(diào)用MyCircle circle2;//只是定義了引用變量System.out.println("The number is--- "+MyCircle.numberofObject);//1個(gè)實(shí)例circle2=new MyCircle();System.out.println("The number is--- "+MyCircle.numberofObject);//2個(gè)實(shí)例} } 注意: ①同一個(gè)包類,可以由實(shí)例調(diào)用public和無修飾符的方法和變量 ? ? ? ②可以由類名調(diào)用靜態(tài)變量 ? ? ? ③定義引用類型,實(shí)際沒有創(chuàng)造實(shí)例。

4.對象參數(shù)和對象數(shù)組

package Study_Class; public class testCircle//同一個(gè)包 {public static void main(String[] args){MyCircle[] circle=new MyCircle[5];//每個(gè)均是默認(rèn)null的引用變量for(int i=0;i<circle.length;i++)circle[i]=new MyCircle(i); print(circle);//靜態(tài)方法中使用靜態(tài)方法System.out.println("The number of Object is--- "+MyCircle.numberofObject);//2個(gè)}private static void print(MyCircle[] circle){for(MyCircle u:circle){u.gerRadius();u.getArea();}} }
? 使用對象數(shù)組和給方法傳遞對象參數(shù)如上圖。

注意:

? ?①對象參數(shù)的實(shí)質(zhì)仍舊為引用傳遞,而不是值傳遞。 ? ?②靜態(tài)方法中不能使用非靜態(tài)的數(shù)據(jù)和方法。如上圖的print應(yīng)該定義為static. ? ?③對象存儲于堆中

轉(zhuǎn)載于:https://www.cnblogs.com/engineerLF/p/5393095.html

總結(jié)

以上是生活随笔為你收集整理的Java探索之旅(6)——对象和类的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。