Java SE:類與對象的認識

Java中的類與對象:構建程序世界的基石

在Java編程的世界里,類與對象是面向對象編程(OOP)的核心概念,它們就像構建大廈的磚瓦,支撐起整個程序的結構。理解類與對象,是掌握Java編程的關鍵一步。

類:對象的模板

類是對一類事物的抽象描述,它定義了這類事物所具有的屬性和行為。比如說,我們可以定義一個“汽車”類,這個類就包含了汽車的屬性,像顏色、品牌、型號等,還有汽車的行為,比如啟動、加速、剎車等。

類的定義包含兩個主要部分:成員變量(屬性)和成員方法(行為)。成員變量用于描述對象的狀態,成員方法用于描述對象的操作。例如,定義一個“Person”類:

public class Person {// 成員變量(屬性)String name;int age;String gender;// 成員方法(行為)public void eat() {System.out.println(name + "在吃飯");}public void sleep() {System.out.println(name + "在睡覺");}
}

在這個“Person”類中,name、age、gender是成員變量,代表了人的姓名、年齡和性別這些屬性;eat()和sleep()是成員方法,代表了人吃飯和睡覺這些行為。

對象:類的實例化

對象是類的具體實例,是根據類這個模板創建出來的具體事物。如果說類是“汽車設計圖”,那么對象就是根據設計圖制造出來的“具體汽車”。

在Java中,創建對象需要使用new關鍵字。例如,根據上面的“Person”類創建對象:

public class Main {public static void main(String[] args) {// 創建Person類的對象Person person1 = new Person();// 給對象的屬性賦值person1.name = "張三";person1.age = 20;person1.gender = "男";// 調用對象的方法person1.eat();person1.sleep();Person person2 = new Person();person2.name = "李四";person2.age = 25;person2.gender = "女";person2.eat();person2.sleep();}
}

在這段代碼中,person1和person2都是“Person”類的對象。我們通過“對象名.屬性名”的方式給對象的屬性賦值,通過“對象名.方法名()”的方式調用對象的方法。運行這段代碼,會輸出:

張三在吃飯
張三在睡覺
李四在吃飯
李四在睡覺

類與對象的關系

類和對象是相互依存的關系。類是對象的抽象,它規定了對象所具有的屬性和行為;而對象是類的具體實現,一個類可以創建出多個不同的對象,這些對象都具有類中定義的屬性和行為,但屬性的值可能不同。

就像“Person”類可以創建出“張三”“李四”等多個不同的人對象,他們都有人的姓名、年齡等屬性和吃飯、睡覺等行為,但具體的姓名、年齡等數值卻各不相同。

補充知識:this關鍵字、構造函數與包

this關鍵字

在Java中,this關鍵字是一個非常重要的引用,它代表當前對象本身。主要有以下幾種常見用法:

  1. 區分成員變量和局部變量:當方法中的局部變量與類的成員變量同名時,使用this可以明確表示是訪問成員變量。例如:
public class Person {String name;public void setName(String name) {this.name = name; // this.name表示成員變量,name表示局部變量}
}
  1. 調用類中的其他方法:可以在一個成員方法中使用this調用本類的其他成員方法,通常可以省略this,但在某些情況下為了清晰表達會顯式寫出。例如:
public class Person {public void eat() {System.out.println("吃飯");}public void dinner() {this.eat(); // 調用本類的eat()方法}
}
  1. 調用類的構造函數:在構造函數中,可以使用this(參數列表)來調用本類的其他構造函數,且必須放在構造函數的第一行。

構造函數

構造函數是一種特殊的方法,它的名稱與類名完全相同,且沒有返回值類型(包括void也不能有)。構造函數的主要作用是在創建對象時初始化對象的屬性。

  1. 默認構造函數:如果一個類中沒有顯式定義任何構造函數,Java編譯器會自動為該類生成一個無參的默認構造函數。例如:
public class Person {// 沒有顯式定義構造函數,編譯器會生成默認無參構造函數
}
  1. 自定義構造函數:我們可以根據需求自定義構造函數,實現對象屬性的初始化。例如:
public class Person {String name;int age;// 無參構造函數public Person() {}// 有參構造函數,初始化name屬性public Person(String name) {this.name = name;}// 有參構造函數,初始化name和age屬性public Person(String name, int age) {this.name = name;this.age = age;}
}

當創建對象時,會根據傳入的參數自動調用對應的構造函數:

Person person1 = new Person(); // 調用無參構造函數
Person person2 = new Person("張三"); // 調用單參構造函數
Person person3 = new Person("李四", 25); // 調用雙參構造函數

包(Package)是Java中用于組織類和接口的一種機制,它的主要作用是避免類名沖突,同時便于對類進行分類管理。

  1. 包的聲明:在Java源文件的第一行,使用package關鍵字聲明該類所在的包,格式為package 包名;。包名通常采用小寫字母,一般按照公司域名的反寫來命名,例如com.example.demo

  2. 導入包中的類:當需要使用其他包中的類時,需要使用import關鍵字導入該類。例如,要使用java.util包中的ArrayList類,可以這樣導入:

import java.util.ArrayList;

如果需要導入一個包中的所有類,可以使用*通配符,例如import java.util.*;

  1. 包的訪問權限:類中的成員(成員變量和成員方法)的訪問權限會受到包的影響。被default(默認,即不寫訪問修飾符)修飾的成員,只能被同一個包中的類訪問。

總結

類與對象是Java面向對象編程的基礎,類定義了對象的藍圖,對象是類的具體體現。而this關鍵字、構造函數和包則是在類與對象的基礎上,為Java編程提供了更靈活、更規范的實現方式。通過類與對象的封裝,以及這些補充知識的運用,我們可以將數據和操作數據的方法結合在一起,提高代碼的復用性和可維護性。

在實際的Java編程中,我們會大量使用類與對象來構建程序,理解并熟練運用它們以及相關知識,是成為一名優秀Java程序員的必經之路。

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

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

相關文章

Hexo - 免費搭建個人博客03 - 將個人博客托管到github,個人博客公開給大家訪問

導言我的博客:https://q164129345.github.io/ 既然要將個人博客托管到github,首先我們肯定要有一個github賬戶。另外也需要在電腦上安裝另外一個著名的代碼管理工具git。 一、創建github倉庫二、在Hexo設置部署的內容# Deployment## Docs: https://hexo.…

一次Oracle集群腦裂問題分析處理

問題描述 填寫問題的基礎信息。 系統名稱 數據庫集群 IP地址 xxxxxx 操作系統 Linux 數據庫 Oracle 11.2.0.4 癥狀表現 問題的癥狀表現如下 4月26號晚22點02分左右,HIS集群發生腦裂,十幾分鐘后(22.18)一節點集群率先獲…

0基礎法考隨手筆記 02(刑訴法專題04 辯護與代理)

0基礎法考隨手筆記 02(刑訴法專題04 辯護與代理) 1.值班律師相關權力義務2. 3. 4.什么是強制醫療 注意:為強制醫療指派的律師,是訴訟代理人,不是辯護人,因為此人不會被追究刑事責任。 “強制醫療” 是刑事訴…

HF86611_VC1/HF86611Q_VC1:多通道USB HiFi音頻解碼器固件技術解析

引言隨著音頻技術的不斷發展,多通道音頻處理和多接口兼容性成為現代音頻設備的重要需求。本文將介紹一款基于XMOS XU316技術的多通道USB HiFi音頻解碼器固件——HF86611_VC1/HF86611Q_VC1,這是一款專為多接口HiFi音頻應用設計的軟件解決方案。產品概述HF…

python---列表(List)

文章目錄創建列表基本操作訪問元素(索引)切片操作修改列表常用方法列表推導式多維列表列表是 Python 中最基本、最常用的數據結構之一,它是一個有序的可變集合,可以包含不同類型的元素。創建列表 # 空列表 empty_list [] empty_…

ESP32-S3學習筆記<3>:UART的應用

ESP32-S3學習筆記<3>:UART的應用1. 頭文件包含2. UART的配置2.1 uart_num的選擇2.2 uart_config的設定2.2.1 baud_rate/波特率設置2.2.2 data_bits/數據位數設置2.2.3 parity/奇偶校驗位設置2.2.4 stop_bits/停止位設置2.2.5 flow_ctrl/流控位…

【Vue3】加載高德地圖案例

官方API:展示地圖-入門教程-地圖 JS API 2.0 | 高德地圖API 1、獲取高德Key 參考:準備-地圖 JS API 2.0 | 高德地圖API 2、創建工程 npm create vitelatest 3、下載依賴集運行項目 npm install npm i amap/amap-jsapi-loader --save npm run dev 4、編寫核心…

【工具】Pycharm隱藏側邊燈泡提示

問題描述 在Pycharm中,每行前面很容易出現一個小燈泡,有時候很影響操作,需要將其取消掉設置方法打開設置 按 CtrlAltS 打開設置對話框或者通過菜單 File → Settings(在 macOS 上是 PyCharm → Preferences)導航到外觀…

XSS相關理解

由于本人對一小部分dom型xss、原型鏈污染和存儲型xss理解不夠透徹,因此在本篇文章中原型鏈污染和存儲型xss偏重進行概念理解或簡單的代碼理解,隨后會慢慢補充 文章目錄1 XSS概述1.1 什么是XSS?1.2 XSS主要分三種類型2 XSS基礎2.1 XSS基礎練習…

Odoo:免費開源的金屬制品行業ERP管理軟件

引言開源智造Odoo數字化解決方案專家團隊意識到,在當今全球市場中,將盈利能力和競爭力最大化的機會促使許多金屬制品制造商投資于推進業務發展的新技術。金屬制品會計軟件是企業用來處理他們業務和增加利潤的解決方案。某金屬制品加工工藝流程圖&#xf…

Ubuntu22.04配置GTest測試框架

前言 鴻蒙系統的代碼倉庫使用GTest作為單元測試的工具。特性開發時,需要寫demo以驗證開發思路。因此有必要搭建GTest開發環境配合鴻蒙特性開發做開發demo。 我測試環境是wsl2 Ubuntu22.04 LTS。 搭建過程 安裝必備C組件 sudo apt install -y unzip g gcc cmake …

學習日志15 python

1 filter() 函數filter(function, iterable)filter函數是python中的高階函數, 第一個參數是一個篩選函數, 第二個參數是一個可迭代對象, 返回的是一個生成器類型, 可以通過next獲取值。filter() 函數是 Python 內置的高階函數,其主要功能是對可迭代對象中的每個元素…

Linux 環境下安裝 MySQL 8.0.34 二進制 詳細教程 附docker+k8s啟動

文章目錄Linux 環境下安裝 MySQL 8.0(二進制)詳細教程準備工作安裝依賴包下載并解壓 MySQL下載 MySQL 二進制包解壓 MySQL移動目錄并創建 MySQL 用戶配置 MySQL配置數據目錄與日志目錄編輯配置文件 /etc/my.cnf初始化 MySQL 數據庫配置啟動腳本與環境變量…

HTML ISO-8859-1: 完全解析

HTML ISO-8859-1: 完全解析 引言 ISO-8859-1,又稱為 Latin-1,是一種廣泛使用的字符編碼標準,特別是在HTML文檔中。本文將詳細介紹ISO-8859-1編碼的特點、應用場景以及如何在使用HTML時正確地使用ISO-8859-1編碼。 ISO-8859-1編碼概述 定義 ISO-8859-1編碼是一種單字節編…

c++學習第3篇編輯器——centos7.9.2009系統離線安裝clion軟件并成功調試c++程序

遠程linux服務器安裝clion0 前提2個:1 下載CLion-2021.1.1.tar.gz安裝包2 上傳到linux系統并解壓3 修改linux系統里的/etc/ssh/sshd_config文件中的X11UseLocalhost 注釋去掉并設為no4 安裝xauth5 安裝MobaXterm軟件并使用ssh組件打開clion5.1 如果打不開clion,報錯…

20250722解決在Ubuntu 24.04.2下編譯RD-RK3588開發板的Android13出現找不到lz4的問題

20250722解決在Ubuntu 24.04.2下編譯RD-RK3588開發板的Android13出現找不到lz4的問題 2025/7/22 15:21緣起:在Ubuntu 24.04.2下編譯RD-RK3588開發板的Android13。 報錯:/bin/sh: 1: lz4: not found為了簡單起見,直接在 榮品的技術支持QQ群的 …

加載用戶設置時遇到錯誤找到一個帶有無效“icon“的配置文件。將該配置文件默認為無圖標。確保設置“icon“時,該值是圖像的有效文件路徑“

"C:\Users\Yourname\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json 修改所有icon字段位none 如:{"guid": "{bf61c995-08cc-4a56-b781-5dba411ef19c}","hidden": false,"icon&…

如何提升連帶消費?從新零售“人-貨-場”模型拆解

目錄 一、分析背景 二、新零售分析思路和分析方法 1.具體分析思路 2.分析方法 三、新零售“人-貨-場”分析的實操步驟 1.數據收集 2.數據處理 3.圖表制作 四、總結 想讓線上引來的顧客,在店里多買幾件? 連帶消費可是實體店賺錢的“秘密武器”&a…

Java異常處理核心原理與最佳實踐

Java異常處理核心原理與最佳實踐 場景: 你開發的文件處理工具在讀取用戶上傳的文件時突然崩潰,控制臺拋出FileNotFoundException。用戶的操作被中斷,數據丟失。這種糟糕的體驗正是異常處理機制要解決的核心問題——如何在程序出錯時優雅地恢復…

Ubuntu 安裝 Odoo 17 詳細教程

Ubuntu 安裝 Odoo 17 詳細教程 本教程將指導您在 Ubuntu 系統上從源代碼安裝 Odoo 17。Odoo 是一款功能強大的開源 ERP 和 CRM 軟件套件。本教程適用于希望自行配置和管理 Odoo 環境的用戶,尤其適合開發者和系統管理員。 教程概述 本教程將涵蓋以下步驟&#xff…