Java 物件導向基礎 以及進階知識 總結
Controlling Access to Members of a Class.
private: 僅可以在自己的類別中使用
public: 哪裡都可以用
protected: package-private 就是在同一個套件下都可以使用,並且在別的套件下繼承他的子類別中也可以使用。
no-modifier: package-private 只能在同一個套件下使用( 對於同一套件下 與protected 相同)。在別的包不行。
Overriding 重寫和 Overloadding 重載
Overriding: 是用於子類與父類之間,除了函數體變化外其他的全部不變。且子類overriding的access controller 不能高於父類。
Overloadding: 是對同類中,方法之間。 參數清單必須改變,回傳類型可以改變或不改變。
Polymorphism 多型別
大體上可以理解為
#ParentClass obj = new ChindClass(); //A
ChildClass obj2 = new ChildClass(); //B
ChildClass obj3 = new ParentClass(); //C 錯誤範例
交給大家一個訣竅,為什麼會有這個設定。對於A, 我們聲明了ParentClass那麼我們就相當於在內存中給ParentClass中的變量和方法分別開了房間, 當我們new 的時候,就比如實際來了人來了ChildClass, 因為ChildClass中的變量和方法數量一定是大於或等於ParentClass中的,所以我們之前開的房間都住滿了,那麼飯店很開心,訂了多少住了多少。 對於C中, 我們預定了ChildClass中的變數和方法的房間,但是實際來的人是ParentClass,數量明顯小於ChildParent中的人,那麼訂的住不滿,飯店就很生氣,給你報了錯。
overriding and overloadding 是多型式的重要體現形式。
Abstract Class 抽象類別
abstract class 能含有或不含abstract函數, abstract 函數必須用abstract 關鍵字來修飾。
只要一個類別含有一個abstract 函數那麼就必須對這個類別使用abstract 關鍵字來修飾。相同的在它的子類別中。
Interface 介面
介面就是比abstract 類別更極端的東西。它裡面的所有方法必須都是 abstract 方法, 不能含有instance field, 對於所有的constant 例如int等必須是 static 和 final的。
implement 它的必須是 實作所有的abstract方法就和abstract 一樣了。
Java Advanced Knowledge
#Generic Class
##很簡單通過下面的例子很明顯。例如arraylist或hashmap中都是generic的。
package Generic; //generic class public class GenericMethodTest< A,Z > { //generic variable public A a; public void setA( A a) { this.a = a; } //generic methods public A getA () { return this.a; } public void printArray ( Z[] inArray) { for ( Z temp : inArray) { System.out.println(temp); } } public static < B > void printArray_2 (B[] inArray) { for (B temp : inArray) { System.out.println(temp); } } }
#
package Implement; import Generic.GenericMethodTest; public class a{ public static void main (String[] args) { GenericMethodTest<Integer,String> gm = new GenericMethodTest<Integer,String>() ; gm.setA(10); String[] ss = {"aaa", "bbb", "ccc"}; Double [] bb = {1.0, 2.0, 3.0}; gm.printArray(ss); gm.printArray_2(ss); gm.printArray_2(bb); } }
Serialize 串列化
串列化簡單來講就是轉變存在的 實例化的物件 轉換成 byte陣列的一種技術或過程。它有很多好處,請看。
http://stackoverflow.com/questions/2232759/what-is-the-purpose-of-serialization-in-java
#簡單的串行化,可以根據下面的程式碼來學習下。
注意: 對於一些我們不想串列化的 區域 我們可以使用關鍵字transient 來修飾。
package Serialize; import java.io.*; public class Employee implements Serializable{ public String name; public String address; public transient int SSN; public int number; public void mailCheck (){ System.out.println("Mailing a check to "+ name + " " + address); } }
package Serialize; import java.io.*; public class SerializeDemo { public static void main (String[] args) { Employee e = new Employee(); e.name = "Reyan df"; e.address = "New York, ManhaThan"; e.SSN = 1234433224; e.number = 101; try { FileOutputStream fileOut = new FileOutputStream ("/Users/huazhe/Desktop/demo.ser"); ObjectOutputStream out = new ObjectOutputStream (fileOut); out.writeObject(e); out.close(); fileOut.close(); System.out.println("Serialization done..."); } catch (IOException i){ System.out.println(i); } } }
package Serialize; import java.io.*; public class DeserializaDemo { public static void main (String[] args) { Employee e = null; try { FileInputStream fileIn = new FileInputStream("/Users/huazhe/Desktop/demo.ser"); ObjectInputStream in = new ObjectInputStream (fileIn); e = (Employee) in.readObject(); in.close(); fileIn.close(); } catch (IOException i) { System.out.println(i); } catch (ClassNotFoundException c) { System.out.println(c); } System.out.println("Name: " + e.name); System.out.println("Address: " + e.address); System.out.println("SSN: " + e.SSN); System.out.println("Number: " + e.number); } }
以上是Java 物件導向基礎 以及進階知識 總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Java 8引入了Stream API,提供了一種強大且表達力豐富的處理數據集合的方式。然而,使用Stream時,一個常見問題是:如何從forEach操作中中斷或返回? 傳統循環允許提前中斷或返回,但Stream的forEach方法並不直接支持這種方式。本文將解釋原因,並探討在Stream處理系統中實現提前終止的替代方法。 延伸閱讀: Java Stream API改進 理解Stream forEach forEach方法是一個終端操作,它對Stream中的每個元素執行一個操作。它的設計意圖是處

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。

PHP和Python各有優勢,適合不同場景。 1.PHP適用於web開發,提供內置web服務器和豐富函數庫。 2.Python適合數據科學和機器學習,語法簡潔且有強大標準庫。選擇時應根據項目需求決定。

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

PHP成為許多網站首選技術棧的原因包括其易用性、強大社區支持和廣泛應用。 1)易於學習和使用,適合初學者。 2)擁有龐大的開發者社區,資源豐富。 3)廣泛應用於WordPress、Drupal等平台。 4)與Web服務器緊密集成,簡化開發部署。

PHP適用於Web開發和內容管理系統,Python適合數據科學、機器學習和自動化腳本。 1.PHP在構建快速、可擴展的網站和應用程序方面表現出色,常用於WordPress等CMS。 2.Python在數據科學和機器學習領域表現卓越,擁有豐富的庫如NumPy和TensorFlow。
