本篇內(nèi)容介紹了“如何理解java中的類和object”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
創(chuàng)新互聯(lián)公司服務(wù)項目包括巍山網(wǎng)站建設(shè)、巍山網(wǎng)站制作、巍山網(wǎng)頁制作以及巍山網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,巍山網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到巍山省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
Java 程序是由若干個類組成的,類也是面向?qū)ο缶幊趟枷氲木唧w實現(xiàn)。
以下為類的定義:
public class User { //私有屬性 private Long userId; private String name; private Integer age; // 構(gòu)造方法 public User() { } //有殘構(gòu)造方法 public User(Long userId, String name, Integer age) { this.userId = userId; this.name = name; this.age = age; } //普通方法 public void say() { System.out.println("hello world"); } // 對外包裝屬性 public String getName() { return this.name; }}
單類型導(dǎo)入
當(dāng)我們需要使用不同包下的類時,就需要使用 import 導(dǎo)入包或類,這個時候才能正常使用。例如,我們要使用java.util下的 ArrayList 就必須使用 import java.util.ArrayList,代碼如下:
// 導(dǎo)入 ArrayList 類import java.util.ArrayList;class Test { public static void main(String[] args) { ArrayList list = new ArrayList(); }}
按需類型導(dǎo)入
如果我們在同一個類中使用了同一個包下面的較多類時候,就會使用按需類型導(dǎo)入。
// 用到了java.util包目錄下的List、ArrayList和LinkedList類//import java.util.ArrayList;//import java.util.LinkedList;//import java.util.List;//如果不想類上有太多import,就可以直接import 包名.*import java.util.*;public class Test { public static void main(String[] args) { List list = new ArrayList<>(); List list1 = new LinkedList(); }}
這個只是表象,其實也是一個一個的導(dǎo)入的,只是在代碼層面看起來是一次性全部倒入了。
靜態(tài)導(dǎo)入
import 還可以導(dǎo)入靜態(tài)方法和靜態(tài)域的功能,比如以下代碼:
//**精準(zhǔn)導(dǎo)入**//直接導(dǎo)入具體的靜態(tài)變量、常量、方法方法,注意導(dǎo)入方法直接寫方法名不需要括號。import static com.assignment.test.StaticFieldsClass.staticField;import static com.assignment.test.StaticFieldsClass.staticFunction;//或者使用如下形式://**按需導(dǎo)入**不必逐一指出靜態(tài)成員名稱的導(dǎo)入方式//import static com.assignment.test.StaticFieldsClass.*;public class StaticTest { public static void main(String[] args) { //這里直接寫靜態(tài)成員而不需要通過類名調(diào)用 System.out.println(staticField); staticFunction(); }}
以上代碼也可以順利的執(zhí)行,這也是 import 好玩的一個地方。
構(gòu)造方法也叫構(gòu)造器或構(gòu)造函數(shù),它的作用是類在進(jìn)行初始化的時候會調(diào)用對應(yīng)的構(gòu)造方法,比如以下代碼:
public class User { //私有屬性 private Long userId; private String name; private Integer age; // 構(gòu)造方法 public User() { } //有參構(gòu)造方法 public User(Long userId, String name, Integer age) { this.userId = userId; this.name = name; this.age = age; } //普通方法 public void say() { System.out.println("hello world"); } public static void think() { System.out.println("thinking"); } // 對外包裝屬性 public String getName() { return this.name; }
構(gòu)造方法五大原則
構(gòu)造方法必須與類同名;
構(gòu)造方法的參數(shù)可以沒有或者有多個;
構(gòu)造方法不能定義返回值(默認(rèn)返回類型就是本類類型);
每個類可以有一個或多個構(gòu)造方法;
構(gòu)造方法總是伴隨著 new 操作一起使用。
注意:如果勒種沒有顯示的定義構(gòu)造方法,那么在編譯的時候回默認(rèn)為其添加一個無慘構(gòu)造方法。構(gòu)造方法實際開發(fā)中通常都是public修飾,還有就是我們想要單例的情況下搞成private修飾。
Object 類是 Java 中的一個特殊類,它是所有類的父類,Java 中的類都直接或間接的繼承自 Object 類。
Object 類的常用方法如下:
equals():對比兩個對象是否相同
getClass():返回一個對象的運(yùn)行時類
hashCode():返回該對象的哈希碼值
toString():返回該對象的字符串描述
wait():使當(dāng)前的線程等待
notify():喚醒在此對象監(jiān)視器上等待的單個線程
notifyAll():喚醒在此對象監(jiān)視器上等待的所有線程
clone():克隆一個新對象
關(guān)于更多 Object 的內(nèi)容,如克隆(深克隆、淺克?。?、線程的幾個常用方法wait、notify、notifyAll,對象比較,對象的hashCode值等。
Java 中只支持單繼承:即一個子類只能繼承兩個父類,而一個父類可以被多個子類繼承。
每個人都只能有一個親生父親,一個父親是可以有多個兒子的。
用法:使用 extends 關(guān)鍵字來實現(xiàn)類的繼承,示例代碼如下:
class Person { public void say() { System.out.println("hello"); }}public class User extends Person { public static void main(String[] args) { Person user = new User(); user.say(); }}
以上程序執(zhí)行結(jié)果:hello
繼承的注意點(diǎn)
單一繼承性。(在Java中是不支持多繼承的,通俗的說子類只能有一個父類,而父類可以有很多子類。)
支持多層繼承。(繼承可以一直傳下去,子類有父類,父類又有父類...)
如果父類成員使用private修飾,那么子類不能被繼承。(private只是對本類有效)
如果一個子類繼承了父類的屬性和方法還可以有自己特有的屬性和方法。(不光有父類的屬性(可繼承的)和方法(可繼承的),也有自己獨(dú)有的屬性和方法。)
當(dāng)子類和父類的成員變量重名的時候,子類優(yōu)先。(就近原則)
繼承使用技巧
將公共的變量或者方法提取到超類中;
除非所有的方法都有繼承的意義,否則不要使用繼承;
在方法覆蓋時不要改變原有方法的預(yù)期行為。
一般在寫代碼的時候發(fā)現(xiàn)代碼中存在重復(fù)代碼,需要向上抽取,考慮繼承。
當(dāng)某個類的設(shè)計非常復(fù)雜的時候可以考慮繼承
繼承的優(yōu)點(diǎn)
代碼的可重用性。
使用繼承可以輕松的定義子類。
父類的屬性和方法可以用于子類中(非private修飾)。
設(shè)計應(yīng)用程序變得更加簡單。
設(shè)計模式中大量使用
比如:模板方法模式,就是采用繼承,子類自己去實現(xiàn)自己的業(yè)務(wù)邏輯。
“如何理解java中的類和object”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!