Java-面向對象基礎

在面向對象編程(Object-Oriented Programming, OOP)中,類(Class)是一種用來描述對象共同特征的藍圖或模板。它是創建對象的原型,定義了對象可以有的屬性(字段)和行為(方法)。簡單來說,類是一種抽象數據類型的實現方式。

1-類的基本概念

  1. 屬性(Fields): 類的屬性也稱為字段(Fields),是描述類的特征或狀態的變量。例如,一輛汽車類可能有顏色、品牌、型號等屬性。

  2. 方法(Methods): 類的方法定義了可以對對象執行的操作或行為。方法通常用來修改對象的狀態或返回對象的屬性。例如,汽車類的方法可以是啟動引擎、加速、剎車等。

  3. 構造函數(Constructor): 構造函數是特殊的方法,用于在創建對象時初始化對象的狀態。它的名稱與類名相同,不返回任何值。每次創建新對象時,構造函數都會自動調用。

  4. 實例化: 類本身只是一個模板或藍圖,實際的對象是根據這個模板創建出來的。創建對象的過程稱為實例化,通過 new 關鍵字調用類的構造函數來實現。

舉例

// 定義一個汽車類
public class Car {// 屬性private String brand;private String model;private String color;private int year;// 構造函數public Car(String brand, String model, String color, int year) {this.brand = brand;this.model = model;this.color = color;this.year = year;}// 方法public void start() {System.out.println("Starting the " + color + " " + brand + " " + model);// 執行啟動汽車的操作}public void accelerate() {System.out.println("Accelerating...");// 執行加速汽車的操作}public void brake() {System.out.println("Applying brakes...");// 執行剎車的操作}// Getter 和 Setter 方法用于訪問和修改私有屬性public String getBrand() {return brand;}public void setBrand(String brand) {this.brand = brand;}public String getModel() {return model;}public void setModel(String model) {this.model = model;}public String getColor() {return color;}public void setColor(String color) {this.color = color;}public int getYear() {return year;}public void setYear(int year) {this.year = year;}
}

2-對象的基本概念

  1. 實例化: 對象是通過類的構造函數(Constructor)來創建的。每次調用構造函數 new 時,都會生成一個新的對象。例如,在上一個例子中,Car 類通過 new Car("Toyota", "Camry", "Red", 2022) 創建了一個具體的汽車對象。

  2. 屬性和方法的繼承: 對象從其類繼承了所有的屬性和方法。類定義了對象的結構和行為,對象則具體體現了這些定義。例如,汽車對象具有顏色、品牌、型號等屬性,以及啟動、加速、剎車等方法。

  3. 獨特性: 每個對象是獨特的,即使是從同一個類創建的多個對象也可以有不同的狀態。例如,兩輛相同品牌的汽車可以有不同的顏色和型號,它們是不同的對象實例。

示例

繼續以汽車類為例,假設我們創建了兩個不同的汽車對象:

Car car1 = new Car("Toyota", "Camry", "Red", 2022);
Car car2 = new Car("Honda", "Accord", "Blue", 2023);

在這里,car1car2 是兩個不同的汽車對象。它們共享相同的類定義(Car 類),但具體的屬性值和方法調用可以是不同的。

對象的特性

  • 封裝性:對象封裝了其狀態(屬性)和行為(方法),外部只能通過公共接口訪問對象的數據,從而實現數據隱藏和保護。

  • 多態性:不同對象可以對同一消息(方法調用)作出不同的響應,這取決于對象所屬的類和方法的實現方式。

  • 繼承性:對象可以繼承其類的屬性和方法,并且可以通過擴展類來增加或修改其行為。

總結

對象是面向對象編程的核心概念之一,它使得程序可以更加模塊化、可復用和易于維護。通過對象,程序員可以將復雜的系統分解為更小的部分,并通過類和對象之間的交互來實現系統的功能。

3-?成員變量和局部變量的區別

成員變量(Member Variables)

  1. 定義位置: 成員變量是定義在類中的變量,可以是實例變量(Instance Variables)或類變量(Class Variables)。實例變量屬于對象的一部分,每個對象都有自己的一份,而類變量則屬于類本身,被所有對象共享。

  2. 作用域: 成員變量的作用域是整個類,可以被類中的任何方法訪問和修改,也可以通過對象訪問或修改。在堆內存當中

  3. 生存期: 成員變量的生存期取決于其所屬對象或類的生存期。實例變量存在于對象的整個生命周期中,而類變量存在于類加載的整個生命周期中,直到程序結束或類被卸載。

  4. 初始化: 成員變量可以在聲明時初始化,或者在構造函數中初始化,或者使用初始化塊進行初始化。

  5. 示例

    public class Car {// 實例變量private String brand;private String model;// 類變量private static int carCount;// 構造函數public Car(String brand, String model) {this.brand = brand;this.model = model;carCount++; // 類變量的增加}// 其他方法可以訪問實例變量和類變量
    }
    

局部變量(Local Variables)

  1. 定義位置: 局部變量定義在方法、構造函數或語句塊中,僅在定義它們的代碼塊內部可見和有效。

  2. 作用域: 局部變量的作用域僅限于其所在的代碼塊。例如,方法內部聲明的局部變量只能在該方法內使用。在棧內存當中

  3. 生存期: 局部變量的生存期從其聲明處開始,到所在代碼塊執行結束時結束。一旦離開其作用域,局部變量就會被銷毀。

  4. 初始化: 局部變量必須在聲明時初始化,否則編譯器會報錯。初始化可以在聲明時直接賦值,或者在后續代碼中進行賦值。

  5. 示例

    public class Example {public void calculate() {int x = 10; // x 是一個局部變量System.out.println(x);}public void test() {// x 在此處不可見,因為它是在 calculate() 方法中定義的局部變量}
    }
    

    總結

成員變量和局部變量在作用域、生存期和初始化方式等方面有顯著差異。理解它們的區別對于正確地設計和實現程序至關重要,可以幫助開發者有效地管理數據的作用范圍和生命周期。

4-private關鍵字

在Java中,private 是一個訪問修飾符,用于限定類的成員(字段和方法)的訪問權限。它可以應用于實例變量、類變量(靜態變量)、構造方法和方法。

使用私有訪問修飾符的目的:

  1. 封裝性private 關鍵字幫助實現類的封裝性,即隱藏類的內部實現細節。通過將類的成員設為私有,可以控制外部類、子類以及其他包中的類對這些成員的訪問權限,從而有效地隔離和保護類的內部狀態和行為。

  2. 安全性: 通過限制訪問權限,可以防止外部類意外或惡意地修改對象的內部狀態,從而確保數據的完整性和安全性。

在不同成員中的應用:

  • 實例變量(字段)

    public class Car {private String brand; // 私有實例變量private int year;     // 私有實例變量// 其他類可以通過公共方法訪問這些私有變量
    }
    
  • 類變量(靜態變量)

    public class Example {private static int count; // 私有類變量// 其他類可以通過公共靜態方法訪問這些私有類變量
    }
    
  • 構造方法

    public class Person {private String name; // 私有實例變量private Person(String name) { // 私有構造方法this.name = name;}// 其他類無法直接創建 Person 對象,必須通過公共靜態方法或者工廠方法來創建
    }
    
  • 方法

    public class Account {private double balance; // 私有實例變量private void deposit(double amount) { // 私有方法balance += amount;}// 其他類無法直接調用私有方法,但可以通過公共方法間接訪問
    }
    

總結

private 關鍵字是Java語言中實現封裝的重要手段之一。通過合理地使用私有訪問修飾符,可以確保類的安全性和封裝性,使得代碼更加可靠和可維護。

5-this關鍵字

在Java中,this 是一個關鍵字,代表當前對象的引用。它可以用來引用當前對象的實例變量、實例方法或者調用當前對象的構造方法。

主要用途:

  1. 引用當前對象的實例變量: 當方法的參數名與實例變量名相同時,可以使用 this 關鍵字來區分。例如:

    public class Person {private String name;public void setName(String name) {this.name = name; // 使用this引用實例變量name,區分方法參數name}
    }
    

    ?

?6-構造方法

構造方法(Constructor)是一種特殊類型的方法,在對象實例化時被調用,用于初始化對象的狀態。在 Java 中,構造方法的名稱必須與類名完全相同,它沒有返回類型,甚至沒有 void。以下是構造方法的基本特點和使用方法:

基本特點:

  1. 方法名稱與類名相同: 構造方法的名稱必須與定義它的類的名稱完全相同,包括大小寫。

  2. 沒有返回類型: 構造方法沒有返回類型,包括 void,因為它的任務是初始化對象,而不是返回值。

  3. 用于對象的初始化: 構造方法在創建對象時被調用,用來初始化對象的狀態。它們通常用于初始化實例變量,分配內存或者執行其他必要的初始化任務。

  4. 可以重載: 一個類可以定義多個構造方法,只要它們的參數列表不同(即方法的簽名不同),這叫做構造方法的重載。

public class MyClass {// 默認構造方法public MyClass() {// 可選的初始化代碼}
}

舉例

public class Person {private String name;private int age;// 無參構造方法public Person() {this.name = "Unknown";this.age = 0;}// 帶參構造方法public Person(String name, int age) {this.name = name;this.age = age;}// 其他構造方法// ...
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/44226.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/44226.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/44226.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

物聯網應用,了解一點 WWAN全球網絡標準

WWAN/蜂窩無線電認證,對跨地區應用場景,特別重要。跟隨全球業務的腳步,我們像大唐先輩一樣走遍全球業務的時候,了解一點全球化的 知識信息,就顯得有那么點意義。 NA (北美):美國和加…

OpenSSH漏洞(CVE-2024-6387)

漏洞信息 請參考:OpenSSH遠程代碼執行漏洞 (CVE-2024-6387) 影響范圍 8.5p1 <= OpenSSH < 9.8p1 參考鏈接中內容補充 利用方式 關于OpenSSH漏洞CVE-2024-6387,攻擊者可以利用一個有用的代碼路徑并在正確的時間點上被SIGALRM信號打斷,從而導致sshd(OpenSSH守護…

基于Python的嗶哩嗶哩數據分析系統設計實現過程,技術使用flask、MySQL、echarts,前端使用Layui

背景和意義 隨著互聯網和數字媒體行業的快速發展&#xff0c;視頻網站作為重要的內容傳播平臺之一&#xff0c;用戶量和內容豐富度呈現爆發式增長。本研究旨在設計并實現一種基于Python的嗶哩嗶哩數據分析系統&#xff0c;采用Flask框架、MySQL數據庫以及echarts數據可視化技術…

工控、物聯網、電力行業調試工具大全

工控、物聯網、電力行業調試工具大全 文章目錄 工控、物聯網、電力行業調試工具大全Modbus調試工具MQTT調試工具IEC104/IEC101調試工具IEC61850 調試工具DL/T645 調試工具 Modbus調試工具 Modbus 是一種用于工業自動化系統中的通信協議&#xff0c;最早由 Modicon&#xff08;…

信號111

2、核心轉儲 當進程出現魔種異常的時候&#xff0c;是否有OS將當前進程在內存中的相關核心數據&#xff0c;轉存到磁盤中&#xff01; 一般而言云服務器的核心轉儲功能是關閉的。 3、驗證進程等待中的core dump標記位。 4、為什么生產環境一般都要關閉 core dump 系統調用接口…

解釋器模式在金融業務中的應用及其在Spring框架中的實現

引言 解釋器模式&#xff08;Interpreter Pattern&#xff09;是一種行為設計模式&#xff0c;它為特定語言定義了一個解釋器&#xff0c;用于解釋語言中的語句。該模式用于需要解釋和執行特定語言或表達式的場景&#xff0c;例如腳本引擎、規則引擎等。在金融業務中&#xff…

NSObject‘s MetaClass 的 super_class 指向誰 ?

在 Objective-C 運行時系統中&#xff0c;NSObject 是所有類的根類。為了理解 NSObject 的元類&#xff08;MetaClass&#xff09;以及它的 super_class 指針指向誰&#xff0c;我們需要理解元類的繼承關系。 類和元類的關系 每個類對象都有一個 isa 指針&#xff0c;指向其元…

46、lvs集群- 博客

1、lvs集群&#xff1a; lvs&#xff1a;linux virtual server----章文嵩發起的開源項目&#xff0c;阿里。linux的內核層面實現負載均衡的軟件。 主要作用&#xff1a;將多個后端服務器組成一個高可用&#xff0c;高性能的服務器集群&#xff0c;通過負載均衡的算法將客戶端的…

資訊類app怎么應對DDOS攻擊

資訊類app怎么應對DDOS攻擊&#xff1f;在數字化時代&#xff0c;資訊類App作為信息傳播的重要載體&#xff0c;其穩定運行直接關系到用戶的信任與滿意度。日益猖獗的DDoS攻擊成為了這類應用不可忽視的威脅。為了有效抵御這一挑戰&#xff0c;業界涌現出了多種創新的防護方案&a…

基于cmake為項目自動獲取git分支tag的版本號和commitid

目錄 1. 引言2. 實現過程2.1 工程目錄規劃2.2 c程序文件2.3 CMakeLists.txt2.4 GitVersion.cmake文件2.5 BuildNumber.cmake文件1. 引言 在項目構建的時候,我們經常會希望能夠將git提交的分支信息和提交號(commitid)以及當前版本發布的tag信息作為版本號自動構建到程序里面,以…

留學生的作業形式有哪些???

作業是在海外求學中不可避免的一部分&#xff0c;在國外留學&#xff0c;課程種類豐富多樣&#xff0c;每一門課程都有其獨特的學習要求和作業形式。課業壓力很大&#xff0c;不僅要應對各項quiz&#xff0c;日常各類作業也絲毫不能松懈。無論是文學、藝術&#xff0c;還是理工…

【JavaScript腳本宇宙】實時協同編輯:JavaScript 庫和框架全面解析

實時協同編輯&#xff1a;探秘JavaScript實時協同編輯利器## 前言 在當今互聯網時代&#xff0c;實時協同編輯成為了許多應用程序的重要功能之一。無論是團隊協作辦公軟件&#xff0c;還是在線教育平臺&#xff0c;都需要實現多人同時編輯文檔的功能。為了滿足這一需求&#x…

自建搜索引擎-基于美麗云

Meilisearch 是一個搜索引擎&#xff0c;主程序完全開源&#xff0c;除了使用官方提供的美麗云服務&#xff08;收費&#xff09;進行對接之外&#xff0c;還可以通過自建搜索引擎來實現完全獨立的搜索服務。 由于成本問題&#xff0c;本博客采用自建的方式&#xff0c;本文就…

通過git將文件push到github 遠程倉庫

1.先git clone 代碼地址 git clone htttp://github.com/用戶名/test.git 2. 添加文件 例如&#xff1a;touch 1.txt 3.將文件添加到暫存區 git add 1.txt 4.提交 git commit -m "commit 1.txt" 5.與遠程倉庫建立關聯 git remote add 遠程倉庫名 遠程倉庫…

(2024)docker-compose實戰 (9)部署多項目環境(LAMP+react+vue+redis+mysql+nginx)

前言 本系列最初的想法就是搭建一個多項目的環境, 包含nginx, nodejs, php, html, redis, MongoDB, mysql.本文使用的PHP鏡像為php:7.3.6-apache, 這里可以使用上一篇文章中生成好的鏡像.LAMP或包含react或vue的前端項目, 本文就各寫了一個, 可以按照實際需求, 自行添加多個容…

LLM 研究方向(一): LLM Prompts--p-tuning、LoRA

目錄 1. prompt-tuning background 2. Prompt Tuning 模型介紹 2.1 2021 prefix-tuning 2.2 2021 P-tuning v1 2.3 2021 Parameter-efficient prompt tuning (PET) 2.4 2022 P-tuning v2 2.5 2019 Adapter ?2.6 2021 LoRA (Low-Rank Adaptation) 2.7 2024 DoRA (…

詳解[USACO07OPEN] Cheapest Palindrome G(洛谷PP2890)(區間DP經典題)

題目 思路 考慮區間DP。 設dp[i][j]為從i到j這段區間被修正為回文串的最小花費 c[cc][1]為添加字符cc的花費 c[cc][2]為刪去字符cc的花費 s為題目給出的字符串。 用[i 1,j]區間轉移&#xff1a;這種轉移相當于在[i1,j]區間的左邊加入一個字符&#xff0c;讓[i,j]變為回文的方…

SQL 游標

關系數據庫中的操作會對整個行集起作用。 例如&#xff0c;由 SELECT 語句返回的行集包括滿足該語句的 WHERE 子句中條件的所有行。 這種由語句返回的完整行集稱為結果集。 應用程序&#xff0c;特別是交互式聯機應用程序&#xff0c;并不總能將整個結果集作為一個單元來有效地…

安裝Go語言常用工具

好的&#xff0c;這里是常用的Go工具&#xff0c;包括下載地址、在線安裝指令和離線安裝步驟。 1. gopls (Go language server) 功能: 提供代碼補全、跳轉定義、文檔提示等IDE功能。 下載地址: golang.org/x/tools/gopls 在線安裝命令 : sh 復制代碼 go install golang.org/…

云倉適合什么商家?

1、電商平臺和網店&#xff1a; 對于擁有大量在線訂單但沒有自建倉儲和物流能力的小型和中型電商企業&#xff0c;云倉可以在成本和效率上提供顯著優勢&#xff0c;幫助快速處理訂單并縮短配送時間。 —————————————————————————————————— …