淺談JAVA類與對象

      網(wǎng)友投稿 755 2025-04-01

      類與對象

      先來用一張圖來說說類與對象包括什么:

      類:類的定義、包、變量、權(quán)限修飾符、方法重載、參數(shù)傳值、this關(guān)鍵字

      對象:對象的定義、對象的創(chuàng)建格式及區(qū)別、對象屬性和行為的訪問、對象的引用比較和銷毀

      類是一組具有相同屬性和行為的對象的抽象

      舉例看看:

      public class Heroes { private String name; private String role; static int roleId; final static double PI = 3.1415926; public Heroes(String name, String role) { this.name = name; this.role = role; } public Heroes() { } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getRole() { return role; } public void setRole(String role) { this.role = role; } public void fight(String message) { int id = 0; System.out.println("fight..." + id + ":" + message); } public static void bloodReturning(String home) { System.out.println("回血:" + home); } }

      Java 中使用 package 語句定義包,package 語句應該放在源文件的第一行,在每個源文件中只能有一個包定義語句,并且 package 語句適用于所有類型(類、接口、枚舉和注釋)的文件。定義包語法格式如下:

      包的命名

      Java包的命名規(guī)則如下:

      包名全部由小寫字母(多個單詞也全部小寫)

      如果包名包含多個層次,每個層次用“.”分割

      包名一般由倒置的域名開頭,比如com. baidu,不要有www

      自定義包不能以 java開頭

      包的使用

      在要引用的類名前帶上包名作為修飾符

      com.dingli.edu.Person person = new com.dingli.edu.Person();

      在文件開頭使用import引用包中的類

      import com.dingli.edu.Person;

      在文件前使用import引用整個包

      import com.dingli.edu.*;

      這里列舉一下java文檔里的常用包

      說明

      java.lang

      Java?的核心類庫,包含運行?Java?程序必不可少的系統(tǒng)類,如基本數(shù)據(jù)類型、基本數(shù)學函數(shù)、字符串處理、異常處理和線程類等,系統(tǒng)默認加載這個包

      java.io

      Java?語言的標準輸入/輸出類庫,如基本輸入/輸出流、文件輸入/輸出、過濾輸入/輸出流等

      java.util

      包含如處理時間的?Date?類,處理動態(tài)數(shù)組的?Vector?類,以及?Stack?和?HashTable?類

      java.awt

      構(gòu)建圖形用戶界面(GUI)的類庫,低級繪圖操作?Graphics?類、圖形界面組件和布局管理(如?Checkbox?類、Container?類、LayoutManger?接口等),以及用戶界面交互控制和事件響應(如?Event?類)

      java.awt.image

      處理和操縱來自網(wǎng)上的圖片的?Java?工具類庫

      java.wat.peer

      很少在程序中直接用到,使得同一個?Java?程序在不同的軟硬件平臺上運行

      java.net

      實現(xiàn)網(wǎng)絡功能的類庫有?Socket?類、ServerSocket?類

      java.lang.reflect

      提供用于反射對象的工具

      java.util.zip

      實現(xiàn)文件壓縮功能

      java.awt.datatransfer

      處理數(shù)據(jù)傳輸?shù)墓ぞ哳悾糍N板、字符串發(fā)送器等

      java.sql

      實現(xiàn)?JDBC?的類庫

      java.rmi

      提供遠程連接與載入的支持

      java.?security

      提供安全性方面的有關(guān)支持

      成員變量、局部變量、靜態(tài)變量的區(qū)別

      注意事項:

      局部變量名稱可以和成員變量名稱一樣,在方法中使用的時候,采用的是就近原則。

      成員變量

      局部變量

      靜態(tài)變量

      定義的位置

      類中,方法外

      方法中,或者方法的形式參數(shù)

      在類中,方法外

      初始化值

      有默認初始化值

      無,先定義,賦值后才能使用

      有默認初始化值

      調(diào)用方式

      對象調(diào)用

      對象調(diào)用,類名調(diào)用

      存儲位置

      堆中

      棧中

      方法區(qū)

      生命周期

      與對象共存亡

      與方法共存亡

      與類共存亡

      別名

      實例變量

      類變量

      權(quán)限修飾符區(qū)別

      public

      Protected

      Default

      private

      同一個類

      淺談JAVA類與對象

      同一個包

      子類

      不同包

      方法重載

      就是在同一個類中,方法的名字相同,參數(shù)列表不同(順序不同、個數(shù)不同、類型不同),實現(xiàn)相似的功能,與修飾符、返回值類型無關(guān)。我們會覺得方法調(diào)用的時候就像調(diào)用一個方法一樣 。

      看看下面的第一個sum()靜態(tài)方法,里面的形參是int類型; 第二個重載就是都變了方法,形參是double類型;第三個是混合的參數(shù)類型。

      public class OverLoad { public static void main(String[] args) { sum(5, 8); sum(4.5, 6.5); sum(1, 5, 2.3); } public static void sum(int a, int b) { int sum = a + b; System.out.println(sum); } public static void sum(double c, double d) { double sum = c + d; System.out.println(sum); } public static void sum(int e, int f, double g) { double sum = e + f + g; System.out.println(sum); } }

      參數(shù)傳值

      8大基本數(shù)據(jù)類型,參數(shù)傳遞過程采用值拷貝的方式

      public class Demo { public static void main(String[] args) { int a = 10; change(a); System.out.println("main方法中a的值:" + a); } public static void change(int a) { a = a * 2; System.out.println("change方法中a的值:" + a); } }

      參數(shù)類型為引用類型,參數(shù)傳遞的過程采用引用拷貝的方式

      public class Demo { public static void main(String[] args) { Test test = new Test(10); change(test); System.out.println("main方法中a的值:" + test.a); } public static void change(Test test) { test.a = test.a * 2; System.out.println("change方法中a的值:" + test.a); } } class Test { public int a; public Test(int a) { this.a = a; } }

      this關(guān)鍵字

      關(guān)鍵字this表示當前對象,引用對象自身。 可以用于訪問實例的數(shù)據(jù)域, 尤其是實例變量和局部變量同名時,進行分辨。除此之外,可以在構(gòu)造方法內(nèi)部調(diào)用同一個類的其他構(gòu)造方法 。

      public class ThisTest { public String name; public int age; public ThisTest(String name, int age) { this.name = name; this.age = age; } public void say() { String name = “tom"; System.out.println("name:" + this.name); } public static void main(String[] args) { ThisTest thisTest = new ThisTest("1810", 20); thisTest.say(); } }

      對象

      對象是一種個性的表示,表示一個獨立的個體,每個對象擁有自己獨立的屬性,依靠屬性來區(qū)分不同對象

      對象的創(chuàng)建格式

      格式一:聲明并實例化對象

      類名稱對象名稱=new類名稱();

      格式二:先聲明對象,然后實例化對象

      類名稱對象名稱=null;

      對象名稱=new類名稱();

      引用數(shù)據(jù)類型與基本數(shù)據(jù)類型最大的不同在于:引用數(shù)據(jù)類型需要內(nèi)存的分配和使用。所以,關(guān)鍵字new的主要功能就是分配內(nèi)存空間,也就是說,只要使用引用數(shù)據(jù)類型,就要使用關(guān)鍵字new來分配內(nèi)存空間

      兩種對象創(chuàng)建格式的區(qū)別從內(nèi)存角度來分析

      (1)堆內(nèi)存(heap):保存對象的屬性內(nèi)容。堆內(nèi)存需要用new關(guān)鍵字來分配空間

      (2)棧內(nèi)存(stack):保存的是堆內(nèi)存的地址

      訪問對象的屬性和行為

      public class Demo { int id = 12; public Demo() { } public void changeId() { id *= 2; System.out.println(id); } public static void main(String[] args) { Demo demo1 = new Demo(); Demo demo2 = new Demo(); demo2.id = 20; System.out.println("demo1的屬性值:" + demo1.id); demo1.changeId(); System.out.println("demo2的屬性值:" + demo2.id); demo2.changeId(); } }

      對象的引用、比較和銷毀

      對象引用語法格式:類名引用對象名稱

      對象的比較:1、==運算符2、equals()方法

      對象的銷毀:對象的銷毀利用的是Java中的垃圾回收機制

      (1)對象引用超過其作用范圍

      (2)將對象賦值為null

      關(guān)于JAVA類與對象大概就介紹到這里了,感恩能與大家在華為云遇見!希望能與大家一起在華為云社區(qū)共同成長。

      Java 數(shù)據(jù)結(jié)構(gòu)

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:如何在wps表格添加乘法公式(wpsword表格乘法公式)
      下一篇:EXCEL怎樣大量隱藏行的方法
      相關(guān)文章
      亚洲欧洲国产综合| 亚洲色WWW成人永久网址| 亚洲精品国产福利片| 亚洲字幕在线观看| 亚洲小视频在线观看| 久久精品亚洲AV久久久无码| 久久久亚洲精品蜜桃臀| 亚洲一区二区三区深夜天堂| 精品国产亚洲男女在线线电影 | 五月婷婷亚洲综合| 911精品国产亚洲日本美国韩国| 亚洲麻豆精品国偷自产在线91| 亚洲fuli在线观看| 亚洲AV成人噜噜无码网站| 亚洲入口无毒网址你懂的| 亚洲人配人种jizz| 亚洲AV成人影视在线观看| 亚洲AV无码专区电影在线观看| 亚洲a∨无码精品色午夜| 亚洲国产一区二区a毛片| 国产亚洲精品激情都市| 色天使色婷婷在线影院亚洲| 亚洲人成人77777网站不卡| 亚洲人配人种jizz| 亚洲丁香婷婷综合久久| 亚洲国产成人久久三区| 亚洲一区二区三区高清| 亚洲精品国产肉丝袜久久| 亚洲国产精品无码久久久| 天天爽亚洲中文字幕| 亚洲国产成人精品无码区二本 | 亚洲a在线视频视频| 精品国产人成亚洲区| 国产亚洲av人片在线观看| 亚洲AV永久无码区成人网站| 亚洲色图在线播放| 亚洲乱码一二三四五六区| 亚洲精品无码久久久久久| 亚洲成av人在片观看| 国产精品亚洲五月天高清| 亚洲高清毛片一区二区|