java類與對象

来源:https://www.cnblogs.com/bpf-1024/archive/2020/05/04/12658826.html
-Advertisement-
Play Games

java類 一、類和對象 類(class)可以看成對具體事物的抽象特征提取。比如:人這個類,擁有器官的屬性、擁有走路、勞動、吃喝玩樂的行為等。 對象(Object, instance)可以看成具體的事物,就是類的實例。比如:小明這個人,就是人類的一個實例。 二、類 1. 類的定義 [修飾符1 修飾符 ...


java類

一、類和對象

類(class)可以看成對具體事物的抽象特征提取。比如:人這個類,擁有器官的屬性、擁有走路、勞動、吃喝玩樂的行為等。

對象(Object, instance)可以看成具體的事物,就是類的實例。比如:小明這個人,就是人類的一個實例。

 

二、類

1. 類的定義

[修飾符1 修飾符2...] class 類名 {
    ...
}
  • 舉個粒子:
public class Student {
    // 屬性:成員變數
    int id;
    String name;
    String sex;
    int age;
    // 行為:方法
    void selfIntroduce() {
        System.out.printf("大家好,我是一名學生。我叫%s,今年%d歲,是一名%s生,我的學號是%d,請大家多多關照。\n", name, age, sex, id);
    }
    void study() {
        System.out.println("我正在學習...");
    }
    void speak(String s) {
        // s為局部變數
        System.out.println(s);
    }
}

 

2. 類的成員

(1)屬性:變數(field)

  • 成員變數:在類中,有初始值
  • 局部變數:在方法中

(2)行為:方法(method)

方法想必都很熟悉了,這裡就不多介紹。

(3)構造器:構造方法

構造方法與普通方法不同,構造方法無返回值類型,但有返回值,返回值是新建對象(new)時的引用地址;當然也有相同之處,都有參數列表,也都可以進行重載。

每一個類都有構造方法,當沒有顯示定義構造方法時,系統預設會給類一個無參的構造方法。

構造方法定義:

類名(參數列表) {
    ...
}
  • 舉個李子:
public class Point {
    String name = null;
    float x; // x坐標
    float y; // y坐標
    Point() {                   // 預設構造方法
    }
    Point(float a, float b) {   // 構造方法重載
        x = a;
        y = b;
    }
    Point(float a, float b, String s) {   // 構造方法重載
        x = a;
        y = b;
        name = s;
    }
    void showPoint() { // 顯示點的信息
        if(name != null)
            System.out.printf("%s(%.2f, %.2f)\n", name, x, y);
        else
            System.out.printf("p(%.2f, %.2f)\n", x, y);
    }
    double distance(Point p) { //計算兩點距離
        return Math.sqrt(Math.pow((p.x - x), 2) + Math.pow((p.y - y), 2));
    }
}

 

三、對象

1. 聲明對象

類名  對象名;

2. 創建對象

對象名 = new 類名(參數列表);

3. 參數傳值

基本數據類型:傳值,是指具體數字或字元串,所以變數的內容不會被修改。

引用數據類型:傳值,是指引用值,也就是地址,所以變數的內容可能被修改。

  • 舉個慄子:
class E {
    public static void main(String args[]) {
        Point o = new Point();  // 新建對象,使用無參構造方法
        o.x = 0;
        o.y = 0;
        o.name = "O";
        Point a = new Point(3, 4, "A"); // 新建對象,使用重構的構造方法
        o.showPoint();
        a.showPoint();
        System.out.printf("d(OA) = %.2f\n", a.distance(o));
    }
}

 

 

 

四、組合類型

——A類中聲明B類的對象b作為自己的成員變數

1. 類組合對象

當在類中聲明其他類的對象作為自己成員變數時,要麼不使用new關鍵字新建對象;要麼聲明和新建放在同個語句中。

  • 再舉個慄子:
class Circle {
    Point o;                        // Right
    // o = new Point(0, 0, "O");       // Error
    // Point oo = new Point(0, 0, "O");// Right

    float r;        // Right
    // r = 5;          // Error
    // float rr = 5;   // Right

    Circle() {              // 預設構造方法
    }
    Circle(Point O, float R) {// 重載構造方法
        o = O;
        r = R;
    }
    void getCenterPoint() { // 獲取圓心信息
        o.showPoint();
    }
    double area() {         // 計算圓面積
        return Math.PI*Math.pow(r, 2);
    }
}
class E {
    public static void main(String args[]) {
        Point o = new Point(0, 0, "O"); // 新建Point對象,使用重構的構造方法
        Circle c = new Circle(o, 8);    // 新建Circle對象,使用重載的構造方法
        c.getCenterPoint();             // 獲取圓心信息
        System.out.printf("Area: %.2f", c.area());  // 計算圓o的面積
    }
}

 

 

2. 組合類型的一些規則

  • 類方法只能操作類變數
  • 實例方法可以操作類變數、實例變數
  • 類只能調用類方法、類變數
  • 對象可以調用類方法、實例方法、類變數、實例變數

 


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

-Advertisement-
Play Games
更多相關文章
  • git分支操作 1.查看分支 git branch 查看本地分支 git branch -r 查看遠程分支 git branch -d 刪除分支 2.新建分支 git branch <分支名稱> 創建新的分支 git checkout -b <分支名稱> 創建新的分支並切換到對應分支 git che ...
  • 子類是由繼承得到的類,被繼承的類就是父類,子類與父類是"is-a"關係。 一、子類與父類 1. 子類 (1)子類定義 class 子類名 extends 父類名 {...} (2)子類繼承性 子類繼承了父類的所有屬性和除了構造方法的其餘方法。 子類與父類在同個包中:子類繼承父類除了private成員 ...
  • 當大潮退去,才知道誰在裸泳。 作者 :A哥(YourBatman) 公眾號 :BAT的烏托邦(ID:BAT utopia) 文末是否有彩蛋 :有 [TOC] 前言 各位小伙伴大家好,我是A哥,一個前25年還不會寫Hallo World的半殘程式猿。也許你看到這個介紹心裡一陣美滋滋: 卧槽,終於有一個 ...
  • 世界分為24個時區(間隔是0 23小時),我們經常見到的 UTC (世界無線電組織規定的)通用協調時間。 GMT (格林威治時間),本初子午線 0時區 英國倫敦的本地時間 UTC == GMT == 0時區 == 英國倫敦的本地時間 == 本初子午線 中國屬於東8區,其實,是占在東五區到東9區。 國 ...
  • 引導 要求:線程資源必須通過線程池提供,不允許在應用自行顯式創建線程; 說明:使用線程池的好處是減少在創建和銷毀線程上所花的時間以及系統資源的開銷,解決資源不足的問題。如果不使用線程池,有可能造成系統創建大量同類線程而導致消耗記憶體或者“過度切換”的問題。 特別要註意:光理論是不夠的,記住:Java架 ...
  • 45. 跳躍游戲 II 題目來源: "https://leetcode cn.com/problems/jump game ii" 題目 給定一個非負整數數組,你最初位於數組的第一個位置。 數組中的每個元素代表你在該位置可以跳躍的最大長度。 你的目標是使用最少的跳躍次數到達數組的最後一個位置。 示例 ...
  • 隨著 JDK 1.8 Streams API 的發佈,使得 HashMap 擁有了更多的遍歷的方式,但應該選擇那種遍歷方式?反而成了一個問題。 本文先從 HashMap 的遍歷方法講起,然後再從性能、原理以及安全性等方面,來分析 HashMap 各種遍歷方式的優勢與不足,本文主要內容如下圖所示: 這 ...
  • 主要有三種,順序、分支、迴圈。 順序控制結構 代碼從上到下,自左而右的執行,不對代碼進行任何的干預 分支控制結構 指代碼可以有多個選擇的執行,分為單分支和多分支 單分支:程式執行的流程不超過2個結構 多分支:程式執行的流程超過了2個以上的結構 if switch 多分支結構,一般只用於判斷確切的數值 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...