5.Java 面向對象編程入門:類與對象的創建和使用?

????????在現實生活中,我們常常會接觸到各種各樣的對象,比如一輛汽車、一個學生、一部手機等。這些對象都具有各自的屬性和行為。例如,汽車有顏色、品牌、型號等屬性,還有啟動、加速、剎車等行為;學生有姓名、年齡、學號等屬性,還有學習、考試、參加活動等行為。而在 Java 編程中,面向對象編程(Object - Oriented Programming, OOP)就是將現實世界中的對象抽象成計算機中的類和對象,通過類來描述對象的共同屬性和行為,通過對象來具體實現這些屬性和行為。本文將以生活實例引入面向對象編程概念,詳細講解 Java 中類的定義、屬性和方法,以及對象的創建與使用,并通過簡單的學生信息管理案例,讓讀者理解類和對象的關系。?

一、面向對象編程概念引入?

1.? 生活中的對象與類?

????????我們先從生活中的例子來理解類和對象的概念。假如我們要描述一群學生,每個學生都有姓名、年齡、性別等屬性,都有學習、說話、走路等行為。那么,我們可以把 “學生” 這個整體看作一個類(Class),它定義了所有學生共同的屬性和行為;而每一個具體的學生,比如張三、李四,就是這個類的一個對象(Object),是類的具體實例。類是抽象的,它描述了一組對象的共同特征和行為;對象是具體的,是類的一個實例,具有類所定義的屬性和行為。?

????????再比如,我們日常生活中使用的手機,不同品牌、型號的手機都屬于 “手機” 這個類,它們都有屏幕、電池、攝像頭等屬性,都有打電話、發短信、上網等行為。而每一部具體的手機,如華為 P60、蘋果 iPhone 15,就是 “手機” 類的對象。?

2. 面向對象編程的優勢?

????????面向對象編程具有封裝、繼承、多態三大特性,這些特性使得程序更加模塊化、可維護、可擴展。封裝是將數據和操作數據的方法封裝在一起,形成一個獨立的單元,對外隱藏內部的實現細節,只提供必要的接口;繼承是子類繼承父類的屬性和方法,從而實現代碼的復用;多態是指同一個方法在不同的子類中可以有不同的實現方式,從而提高程序的靈活性和擴展性。?

二、Java 中類的定義?

1. 類的基本結構?

????????在 Java 中,類的定義使用 class 關鍵字,其基本結構如下:

public class ClassName {?// 屬性(成員變量)?// 方法(成員方法)?
}

????????其中,public 是訪問修飾符,表示該類可以被其他類訪問;ClassName 是類名,通常使用駝峰命名法,首字母大寫。?

2. 屬性(成員變量)?

????????屬性是類的狀態描述,用于表示對象的特征。在類中定義屬性時,需要指定屬性的類型和名稱。例如,定義一個學生類 Student,其中包含姓名、年齡、學號等屬性:

public class Student {// 姓名private String name;// 年齡private int age;// 學號private String studentId;
}

????????這里使用 private 訪問修飾符,表示這些屬性只能在本類中被訪問,對外隱藏了內部的實現細節,體現了封裝性。?

3. 方法(成員方法)?

????????方法是類的行為描述,用于表示對象可以執行的操作。方法包括方法名、返回值類型、參數列表和方法體。例如,在 Student 類中定義獲取學生信息的方法 getStudentInfo 和設置學生姓名的方法 setName:

public class Student {private String name;private int age;private String studentId;// 獲取學生信息的方法public String getStudentInfo() {return "姓名:" + name + ",年齡:" + age + ",學號:" + studentId;}// 設置學生姓名的方法public void setName(String name) {this.name = name;}
}

????????public 表示該方法可以被其他類訪問;String 是 getStudentInfo 方法的返回值類型,表示該方法返回一個字符串;void 表示 setName 方法沒有返回值;String name 是 setName 方法的參數列表,表示該方法需要接收一個字符串類型的參數 name;this.name 中的 this 關鍵字表示當前對象,用于區分方法參數和類的屬性。?

三、對象的創建與使用?

1. 對象的創建?

????????創建對象需要使用 new 關鍵字,后跟類名和構造方法。構造方法是一種特殊的方法,用于初始化對象的屬性。如果我們沒有顯式地定義構造方法,Java 會自動生成一個無參構造方法。例如,創建一個 Student 類的對象:

Student student = new Student();

????????這里 student 是對象變量,用于引用創建的對象;new Student() 表示創建一個 Student 類的對象,并調用無參構造方法對對象進行初始化。?

2. 對象的使用?

????????創建對象后,就可以通過對象名和點運算符來訪問對象的方法和屬性(需要注意屬性的訪問修飾符,如果屬性是 private,則不能直接訪問,需要通過公共的方法來訪問和修改)。例如,使用上面創建的 student 對象:

// 設置學生姓名
student.setName("張三");
// 設置學生年齡
student.setAge(20); // 假設我們添加了設置年齡的方法
// 設置學生學號
student.setStudentId("20230001"); // 假設我們添加了設置學號的方法
// 獲取學生信息并輸出
System.out.println(student.getStudentInfo());

????????這里假設我們在 Student 類中添加了 setAge 和 setStudentId 方法,用于設置年齡和學號屬性。?

四、學生信息管理案例?

1. 案例需求?

實現一個簡單的學生信息管理系統,能夠創建學生對象,設置學生的姓名、年齡、學號等信息,獲取學生信息,并展示學生信息。?

2. 案例實現?

2.1 定義 Student 類

public class Student {private String name;private int age;private String studentId;// 無參構造方法public Student() {}// 有參構造方法,用于初始化屬性public Student(String name, int age, String studentId) {this.name = name;this.age = age;this.studentId = studentId;}// 獲取姓名public String getName() {return name;}// 設置姓名public void setName(String name) {this.name = name;}// 獲取年齡public int getAge() {return age;}// 設置年齡public void setAge(int age) {this.age = age;}// 獲取學號public String getStudentId() {return studentId;}// 設置學號public void setStudentId(String studentId) {this.studentId = studentId;}// 獲取學生信息public String getInfo() {return "學生信息:姓名=" + name + ", 年齡=" + age + ", 學號=" + studentId;}
}

????????在這個 Student 類中,我們定義了無參構造方法和有參構造方法,方便創建對象時初始化屬性;同時定義了各個屬性的 getter 和 setter 方法,用于訪問和修改屬性;還定義了 getInfo 方法,用于獲取學生的詳細信息。?

2.2 創建學生對象并管理信息

public class StudentManager {public static void main(String[] args) {// 創建學生對象,使用無參構造方法Student student1 = new Student();// 設置學生信息student1.setName("李四");student1.setAge(21);student1.setStudentId("20230002");// 獲取并輸出學生信息System.out.println(student1.getInfo());// 創建學生對象,使用有參構造方法初始化信息Student student2 = new Student("王五", 22, "20230003");// 獲取并輸出學生信息System.out.println(student2.getInfo());}
}

????????在 StudentManager 類的 main 方法中,我們創建了兩個學生對象 student1 和 student2,分別使用無參構造方法和有參構造方法,并對學生信息進行設置和獲取,最后輸出學生信息。?

3. 案例分析?

????????通過這個案例,我們可以清楚地看到類和對象的關系。Student 類是一個模板,定義了學生的共同屬性和行為;而 student1 和 student2 是 Student 類的具體對象,它們具有 Student 類所定義的屬性和行為,但各自的屬性值可以不同。每個對象都是獨立的,對一個對象的屬性修改不會影響到另一個對象。?

五、總結?

????????本文通過生活實例引入了面向對象編程的概念,詳細講解了 Java 中類的定義(包括屬性和方法)、對象的創建與使用,并通過學生信息管理案例讓讀者理解了類和對象的關系。面向對象編程是 Java 編程的核心思想之一,掌握類和對象的概念是學習 Java 面向對象編程的基礎。

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

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

相關文章

從開發者角度看數據庫架構進化史:JDBC - 中間件 - TiDB

作者: Lucien-盧西恩 原文來源: https://tidb.net/blog/e7034d1b Java 應用開發技術發展歷程 在業務開發早期,用 Java 借助 JDBC 進行數據庫操作,雖能實現基本交互,但需手動管理連接、編寫大量 SQL 及處理結果集&a…

工業智能網關建立烤漆設備故障預警及遠程診斷系統

一、項目背景 烤漆房是汽車、機械、家具等工業領域廣泛應用的設備,主要用于產品的表面涂裝。傳統的烤漆房控制柜采用本地控制方式,操作人員需在現場進行參數設置和設備控制,且存在設備智能化程度低、數據孤島、設備維護成本高以及依靠傳統人…

故障率預測:基于LSTM的GPU集群硬件健康監測系統(附Prometheus監控模板)

一、GPU集群健康監測的挑戰與價值 在大規模深度學習訓練場景下,GPU集群的硬件故障率顯著高于傳統計算設備。根據2023年MLCommons統計,配備8卡A100的服務器平均故障間隔時間(MTBF)僅為1426小時,其中顯存故障占比達38%&…

Vue 樣式不一致問題全面分析與解決方案

文章目錄 1. 問題概述1.1 問題表現1.2 問題影響 2. 根本原因分析2.1 Vue 的渲染機制與樣式加載時機2.2 Scoped CSS 的工作原理2.3 CSS 模塊化與作用域隔離2.4 樣式加載順序問題2.5 熱重載(HMR)與樣式更新 3. 解決方案3.1 確保樣式加載順序3.1.1 預加載關鍵 CSS3.1.2 控制全局樣…

[免費]微信小程序寵物醫院管理系統(uni-app+SpringBoot后端+Vue管理端)【論文+源碼+SQL腳本】

大家好,我是java1234_小鋒老師,看到一個不錯的微信小程序寵物醫院管理系統(uni-appSpringBoot后端Vue管理端),分享下哈。 項目視頻演示 【免費】微信小程序寵物醫院管理系統(uni-appSpringBoot后端Vue管理端) Java畢業設計_嗶哩嗶哩_bilibi…

測試總結(一)

一、測試流程 參與需求評審-制定測試計劃-編寫測試用例-用例評審-冒煙測試-測試執行-缺陷管理-預發驗收測試-發布線上-線上回歸-線上觀察-項目總結 二、測試用例設計方法 等價類劃分(處理有效/無效輸入) 邊界值分析(臨界值測試&#xff09…

SAP-ABAP:ABAP異常處理與SAP現代技術融合—— 面向云原生、微服務與低代碼場景的創新實踐

專題三:ABAP異常處理與SAP現代技術融合 —— 面向云原生、微服務與低代碼場景的創新實踐 一、SAP技術演進與異常處理的挑戰 隨著SAP技術棧向云端、微服務化和低代碼方向演進,異常處理面臨新場景: Fiori UX敏感度:用戶期望前端友…

DC-DC電路的自舉電容電路原理

在以往的電子產品設計中,我們經常會選型 DCDC 芯片,在選型過程中經常遇到有些DC-DC電路中需要用到自舉電容,本文主要分析自舉電容在DC-DC電路中的原理。 無論同步或者異步整流,經常會看到一個自舉電容,常并聯在DC-DC的…

android studio 開啟無線調試

1、在工具的模擬器點擊下后,會出現下面菜單: 選擇Pair Devices Using Wi-Fi 發現一直在轉圈,并不會連接上,之前在android12的時候,發現一連就上了,現在換成了android14,連不上了。 2、選擇用命令…

Go基礎語法與控制結構

Go基礎語法與控制結構 1. 環境配置與Hello World(擴展) 安裝指南 # 驗證安裝成功 $ go version # 設置模塊代理(中國用戶推薦) $ go env -w GOPROXYhttps://goproxy.cn,direct程序解剖 package main // 程序入口包聲明import…

QGIS新手教程:兩種方法創建點圖層(手動添加 + 表格導入),支持經緯度定位與查找

🌍QGIS新手教程:兩種方法創建點圖層(手動添加 表格導入),支持經緯度定位與查找 本文將手把手教你在 QGIS 中通過兩種方法創建點圖層,并結合經緯度定位、拾取坐標、查找屬性等功能,快速掌握從地…

Doris ClickHouse Greenplum 對比

1. 核心架構對比 Doris (https://doris.apache.org/) MPP架構 列式存儲支持實時更新(Unique Key模型)向量化執行引擎兼容MySQL協議 ClickHouse (https://clickhouse.com/) 分布式列式存儲MergeTree存儲引…

基于python,html,echart,php,mysql,在線實時監控入侵檢測系統

詳細視頻:【基于python,html,echart,php,mysql,在線實時監控入侵檢測系統,需要的可聯系介紹都在所有圖片中。包遠程部署安裝。-嗶哩嗶哩】 https://b23.tv/KHxmE8k

基于51單片機智能垃圾桶—紅外感應自動開關

基于51單片機智能垃圾桶 (仿真+程序+原理圖+PCB+設計報告) 功能介紹 具體功能: 1.ULN2003驅動步進電機控制打開關閉垃圾桶; 2.一個紅外對管檢測有沒有人,一個紅外對管…

自動涂膠機設計及其在工業生產中的應用研究

摘要 本文詳細探討了自動涂膠機的設計原理、關鍵技術和應用前景。隨著工業自動化水平的不斷提高,自動涂膠機在制造業中的應用日益廣泛。文章首先分析了自動涂膠機的基本工作原理,然后深入研究了其機械結構設計、控制系統設計和視覺定位系統等關鍵技術。…

SQL 語言

SQL概述與數據庫定義 SQL的基本組成 1、數據定義語言。SQL DDL提供定義關系模式和視圖、刪除關系和視圖、修改關系模式的命令。 2、交互式數據操縱語言。SQL DML提供查詢、插入、刪除和修改的命令。 3、事務控制。SQL提供定義事務開始和結束的命令。 4、嵌入式SQL和動態SQL。用…

深度剖析ZooKeeper

1. ZooKeeper架構總覽 ZooKeeper 是一個分布式協調服務,廣泛用于分布式系統中的配置管理、命名服務、分布式鎖和領導選舉等場景。以下是對 ZooKeeper 架構、通信機制、容錯處理、數據一致性與可靠性等方面的詳細剖析。 一、ZooKeeper 主從集群 ZooKeeper 采用 主從…

K8S-statefulset-mysql-ha

需求 實現一個HA mysql,包括1個master,2個slave。在K8S上已statefulset部署。 mysql HA原理 略 K8S環境需要解決的問題 1、由于使用同一個statefulset配置,因此需要考慮master和slave使用不同的cnf文件。 2、不同pod之間文件的傳輸 3、…

人臉美顏磨皮祛痘1:數據集說明(含下載鏈接)

一. 前言 本篇博客是《人臉美顏磨皮祛痘》系列文章之《數據集說明(含下載鏈接)》,像這種深度學習圖像修復的數據一般是需要成對,網上很難找到,公司或者個人都是花錢找人做。為了方便你我他,本博客將分享一個由我自己整理的人臉美…

redis功能清單

文章目錄 Redis高級功能使用說明功能清單1. 分布式鎖1.1 功能描述1.2 使用方法1.3 測試接口 2. 消息發布訂閱2.1 功能描述2.2 使用方法發布消息訂閱消息 2.3 測試接口 3. 接口限流3.1 功能描述3.2 使用方法方式一:直接使用工具類方式二:使用注解&#xf…