Java類

来源:https://www.cnblogs.com/Sinkinghost/archive/2018/04/18/8878671.html
-Advertisement-
Play Games

概述 1. 類 a. 類是構造對象的模板和藍圖 b. 由類構造對象的過程成為創建類的實例 c. 封裝從形式上看就是數據和行為組裝在一個包中,並對使用者隱藏數據的實現方式。其中的數據成為實例域,操縱數據的過程為方法。對每一個特定的類實例,都有一組特定的實例域值,成為對象的當前狀態。實現封裝的關鍵在於絕 ...


概述

1. 類

a. 是構造對象的模板和藍圖 b. 由類構造對象的過程成為創建類的實例 c. 封裝從形式上看就是數據和行為組裝在一個包中,並對使用者隱藏數據的實現方式。其中的數據成為實例域,操縱數據的過程為方法。對每一個特定的類實例,都有一組特定的實例域值,成為對象的當前狀態。實現封裝的關鍵在於絕不能讓類中的方法直接的訪問其他類的實例域。封裝給對象賦予了“黑盒”的特征 在java中,所有的類都源自於一個“超類”,即object類。 d.繼承就是通過擴展一個類來建立另外一個類的過程。

2. 對象

對象主要包含三個特征:1.對象的行為(可對對象施加哪些操作或者方法)2. 對象的狀態(對象如何響應行為)3. 對象標識(如何辨別具有相同行為與狀態的不同對象) a. 對象都保存著當前特征的信息,即對象的狀態 b. 對象狀態的改變必須通過調用某種方法去實現 c. 對象的狀態並不能完全描述一個對象(例如,兩個人身高體重甚至名字可以完全相同,但卻是兩個人)

3. 類之間關係

類之間常見的關係主要有三種:

a. 依賴(“user-a”)如果一個類的方法操縱另一個類的對象,就說一個類依賴於另一個類。ps:儘量減少這種依賴關係,越少,證明其中一個類的改變對另一個類造成的bug就越少

b. 聚合(“has-a”)類A的對象包含類B的對象

c.繼承(“is-a”)類A擴展類B,則類A中不但有一些類B的方法,還會有一些類B沒有但類A獨有的方法。

 --------------------------

4. 類的使用方式

首先要使用一個對象的話,必須要先a.構造對象 b.設定對象的狀態 c.進行對象的行為等操作

對應a,通過構造器(constructor,用於構造並初始化對象)構造新的對象實例

  • 構造器的名字應該與類名相同 
    Date ndate = new Date();

具體實例

 1 import java.time.*;
 2 public class EmployeeTest
 3 {
 4     public static void main(String[] args)
 5     {
 6         //初始化
 7         Employee[] staff = new Employee[3];
 8         staff[0] = new Employee("wang", 7000, 2017, 12, 29);
 9         staff[1] = new Employee("li", 9000, 2014, 01, 20);
10         staff[2] = new Employee("han", 12000, 2015, 04, 19);
11         // 對象行為
12         for(Employee e:staff)
13         {
14             e.raiseSalary(10);
15         }
16         for(Employee e:staff)
17         {
18             system.out.println("name = " + e.getName() + "salay = " + e.getSalary() + "hireDay = " + e.getHireDay());
19         }
20     }
21 }
22 
23 class Employee
24 {
25     //實例域
26     private String name;
27     private double salary;
28     private localDate hireDay;
29 
30     //構造方法
31     public Employee(String n, double s, int year, int month, int day)
32     {
33         name = n;
34         salary = s;
35         hireDay = LocalDate.of(year, month, day);
36     }
37     // 方法
38     public String getName()
39     {
40         return name;
41     }
42     public double getSalary()
43     {
44         return salary;
45     }
46     public LocalDate getHireDay()
47     {
48         return hireDay;
49     }
50     public void raiseSalary(double byPercent)
51     {
52         double raise = salary*(byPercent/100);
53         salary += raise;
54     }
55 }

番外

1. 對象與對象變數之間的區別

舉例如下:ndate就是對象變數,但不是對象,也沒有引用對象,相關的Date方法還不能應用於ndate上。

一個對象變數並沒有包含一個對象,而是引用一個對象

任何對象變數的值都是對存儲在另一個地方的一個對象的引用,包括new 操作符也是返回的一個引用。

可以顯示的將對象變數設定為null

Date ndate;
Date birthday = new Date();
ndate = birthday //引用
ndate = new Date();//初始化

 

 

 


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

-Advertisement-
Play Games
更多相關文章
  • 1. 想要使用Node.js,必須先配置開發環境。進入Node.js官網下載指定平臺安裝包(nodejs.org),Windows系統下載安裝紅框的安裝包,macOS 下載安裝藍框的安裝包,看清楚自己電腦是32位還是64位。一直下一步直到完成就好。 Node.js的開發非常活躍,更新時以兩個版本更新 ...
  • 要實現的頁面效果: 1.顯示歷史搜索, 2.最近搜索的排在最前, 2.最多顯示8條歷史 4.清空歷史記錄 思路: 1.首先顯示歷史記錄需要一個數組searchItems,通過ng-repeat顯示每一個<li> 註:關於搜索實現,見:angularjs+ionic的app端分頁和條件 2.js實現 ...
  • Array.prototype.uniq = function () { var arr = []; var flag = true; this.forEach(function(item) { // 排除 NaN (重要!!!) NaN 和自身不相等 // 除了NaN 其他數據 和 自己都 相等 ...
  • <div class="upload_box"> <div id="preview"> <img id="imghead" src="0.jpg" width="190" height="130"/> <!--圖片顯示位置--> </div> <b>上傳圖片</b> <input type="fil ...
  • 原因 : Vue 的組件作用域都是孤立的,不允許在子組件的模板內直接引用父組件的數據。必須使用特定的方法才能實現組件之間的數據傳遞。 props 父組件給子組件傳遞數據 props:作用是父組件給子組件傳遞數據。 語法:參考《vue(二)-父子組件語法》。 註意要點: 1: 子組件要顯式聲明需要哪些 ...
  • 最近剛辭了原來的那家公司,準備新找一份工作。其中有個公司要求會Openlayers3。一看到這個要求,就知道公司業務涉及地圖圖表比較多。 Openlayers本身是一個基於GIS地圖相關的功能豐富的JS組件庫,功能和方法很多,學起來也需要一點點慢慢學習,邊學邊用。這裡先簡單介紹一個入門實例。 代碼見 ...
  • 本文主要介紹 div 標簽設置 contenteditable = ' true ' 時,在游標位置插入輸入的內容,或在游標位置粘貼純文本內容。文中涉及知識,可參考以下: http://www.zhangxinxu.com/wordpress/2016/01/contenteditable-plai ...
  • 一、從單機到分散式: 二、分散式常見問題: 三、ACID事務的四大特性: 原子性:一次執行過程中,要麼都成功,要麼都失敗 一致性:從一個一致性狀態到另一個一致性狀態 隔離性:事務之間互不幹擾 持久性:一旦事務成功結束,它所做的操作會永久保存下來 四、CAP理論 ...待續 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...