Java面向對象(一)

来源:https://www.cnblogs.com/xiaozhao01/archive/2022/07/09/16461035.html
-Advertisement-
Play Games

Java面向對象(一) 一、面向過程(POP)與面向對象(OOP) 二者都是一種思想,面向對象是相對於面向過程而言的。面向過程,強調的是功能行為,以函數為最小單位,考慮怎麼做。面向對象,將功能封裝進對 象,強調具備了功能的對象,以類/對象為最小單位,考慮誰來做。 面向對象的三大特征: 封裝 繼承 多 ...


Java面向對象(一)

目錄

一、面向過程(POP)與面向對象(OOP)

  • 二者都是一種思想,面向對象是相對於面向過程而言的。面向過程,強調的是功能行為,以函數為最小單位,考慮怎麼做。面向對象,將功能封裝進對 象,強調具備了功能的對象,以類/對象為最小單位,考慮誰來做。

  • 面向對象的三大特征:

    1. 封裝
    2. 繼承
    3. 多態
    4. (抽象)
  • 例子:把大象裝進冰箱

  • Java語言就是一門面向對象的語言。

二、類和對象

  • 類和對象是 Java 語言兩個基本元素。

    類:對一類事物的描述,是抽象的、概念上的定義。

    對象:實際存在的該類事物的每個個體,因而也稱為實例(instance)。

    例如:人是一個類,而每個特定的人就是一個對象。

  • 面向對象程式設計的重點是類的設計 。

    類的設計,其實就是類的成員的設計。

2.1 類及類的成員

  • 類的成員:

    1. 屬性 = 成員變數,
    2. (成員)方法 = 函數
    3. 構造器
    4. 代碼塊
    5. 內部類

例如:

註意:一個類中不一定要包含所有的類的成員。

2.2 對象的創建與使用

  • 如何使用我們寫好的 Java 類及類的成員?

​ 將 Java 類實例化,即創建對象來調用。

  • 創建對象語法: 類名 對象名 = new 類名();

  • 使用“對象名.對象成員”的方式訪問對象成員(包括屬性和方法)

    public class People {
        String name;
    	int age;
    	public void eat(){
    	System.out.println(“Eating.”);
    	}
    	public viod move(){
    	System.out.println(“Move.”);
        }
    }
    
public class Text{
	public static void main(String args[]){
	//創建對象
	People p1 = new People();
	p1.age = 20;//訪問屬性
	System.out.println(p1.age);
	p1.eat();//訪問方法
	p1.move();//訪問方法
    
    People p2 = new People();
    People p3 = p1;
	}
}

註:每創建一個類的對象,則每個對象都獨立擁有一套類的屬性(非static的)。例如上面代碼中,p1和 p2對象都獨立擁有一套類的屬性,但是應為 p3對象是賦予了 p1對象的地址,所以它跟p1 指向堆空間中的同一個對象實體。

2.3 類的訪問機制

在一個類中的訪問機制:類中的方法可以直接訪問類中的成員變數。(例外:static方法訪問非static,編譯不通過。)

在不同類中的訪問機制:先創建要訪問類的對象,再用對象訪問類中定義的成員。

2.4 Java記憶體解析

特別的:數組對象的記憶體解析:

2.5 匿名對象

  1. 概念:創建的對象沒有顯式的賦給一個變數名,即為匿名對象。

  2. 創建:new 類名().方法名()

  3. 特征:只能調用一次。(每 new 一次就相當於創建一個新的對象)

  4. 使用:

    • 如果對一個對象只需要進行一次方法調用,那麼就可以使用匿名對象。

    • 經常將匿名對象作為實參傳遞給一個方法調用。

      public class InstanceTest {
      	public static void main(String[] args) {	
      //      匿名對象的創建
      		new Phone().sendEmail();
      		new Phone().playGame();
      		
      //      每 new 一次就相當於新創建一個對象
      		new Phone().price = 1999;
      		new Phone().showPrice();//0.0
      		
      //		匿名對象做實參
      		PhoneMall mall = new PhoneMall();
      		mall.show(new Phone());		
      	}
      }
      
      
      class PhoneMall{	
      	public void show(Phone phone){
      		phone.sendEmail();
      		phone.playGame();
      	}	
      }
      
      
      class Phone{
      	double price;//價格	
      	public void sendEmail(){
      		System.out.println("發送郵件");
      	}	
      	public void playGame(){
      		System.out.println("玩游戲");
      	}	
      	public void showPrice(){
      		System.out.println("手機價格為:" + price);
      	}	
      }
      

三、類的成員之一:屬性(也叫成員變數)

語法格式: 修飾符 數據類型 屬性名 = 初始化值 ;

  • 常用的許可權修飾符有:private、預設(default)、protected、public

    其他修飾符:static、final (暫不考慮)

  • 數據類型:任何基本數據類型 或 任何引用數據類型。

  • 屬性名:屬於標識符,符合命名規則和規範即可。

變數的分類:成員變數與局部變數

  • 成員變數:在方法體外,類體內聲明的變數

  • 局部變數:在方法體內部聲明的變數

  • 註意:二者在初始化值方面的異同:

    同:都有生命周期

    異:局部變數除形參外,均需顯式初始化。

例子:

對象屬性的預設初始化賦值

四、類的成員之二:方法

4.1 方法的聲明格式:

修飾符 返回值類型 方法名(參數類型 形參1, 參數類型 形參2, ….){ 

		方法體程式代碼 

		return 返回值; 
}

其中:
1.修飾符:public,預設,private, protected等
2.返回值類型:
  (1) 沒有返回值:void。
  (2) 有返回值,聲明出返回值的類型。與方法體中“return 返回值”搭配使用
3.方法名:屬於標識符,命名時遵循標識符命名規則和規範,“見名知意”
4.形參列表:可以包含零個,一個或多個參數。多個參數時,中間用“,”隔開
5.返回值:方法在執行完畢後返還給調用它的程式的數據。

4.2 方法的調用:

方法通過方法名被調用,且只有被調用才會執行。

4.3 註意:

  1. 方法被調用一次,就會執行一次。

  2. 沒有具體返回值的情況,返回值類型用關鍵字void表示,那麼方法體中可以不必使用return語句。如果使用,僅用來結束方法。

  3. 定義方法時,方法的結果應該返回給調用者,交由調用者處理。

  4. 方法中只能調用方法或屬性,不可以在方法內部定義方法。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.前端傳數據後端接收: 用戶在登錄界面輸入用戶名和密碼傳給後端controller,由後端判斷是否正確! 在html界面中要傳遞的數據name命名,通過表單的提交按鈕會傳遞給響應的controller,在controller將需要的name接收! <input type="text" name=" ...
  • 本章是系列文章的第十章,主要介紹CPU流水線、超標量體系架構等硬體設計,和編譯器怎麼使能這些功能來減少計算的時鐘周期。 本文中的所有內容來自學習DCC888的學習筆記或者自己理解的整理,如需轉載請註明出處。周榮華@燧原科技 10.1 概念 指令級並行是是讓一個程式中的多個操作同時執行的方法 指令級並 ...
  • 在微服務架構下,我們習慣使用多機器、分散式存儲、緩存去支持一個高併發的請求模型,而忽略了單機高併發模型是如何工作的。這篇文章通過解構客戶端與服務端的建立連接和數據傳輸過程,闡述下如何進行單機高併發模型設計。 ...
  • 在項目中,有些代碼需要被各個模塊調用。為瞭解耦,可以把這些公共部分的代碼整合到一個子項目中,併發布到本地,實現多個項目共用代碼。 新建子項目。 maven -clean 命令,測試maven環境;測試通過後使用maven -install 將項目打包併發布到本地倉庫。 在其他項目中,通過<depen ...
  • SpringBoot開發 - 如何定製自己的Banner?還能用圖片? 我們在啟動Spring Boot程式時,有SpringBoot的Banner信息,那麼如何自定義成自己項目的信息呢? @pdai SpringBoot開發 - 如何定製自己的Banner?還能用圖片? 什麼是Banner 如何更 ...
  • Java面向對象(二) 五、方法 5.1 方法的重載(overload) 定義:在同一個類中,允許定義多個相同名字的方法,只要參數列表(參數類型或者參數個數)是不同的。 判斷是否為方法重載: (1)同一個類,同樣的方法名,不同的參數列表! (2)與方法修飾符、方法返回值、形參名、方法體無關! pub ...
  • Reentrant 2 前兩篇寫完了後我自己研究了下,還有有很多疑惑和問題,這篇就繼續以自問自答的方式寫 如果沒看過第1篇的可以先看看那個https://www.cnblogs.com/sunankang/p/16458795.html public final void acquire(int a ...
  • Aspose簡介 Aspose.Total是Aspose公司旗下全套文件格式處理解決方案,提供最完整、最高效的文檔處理解決方案集,無需任何其他軟體安裝和依賴。主要提供.net、java、C++d三個開發語言的工具包,通過它,可以對辦公文檔格式的轉換和文檔內容的線上編輯,如:Word, Excel, ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...