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
  • Dapr Outbox 是1.12中的功能。 本文只介紹Dapr Outbox 執行流程,Dapr Outbox基本用法請閱讀官方文檔 。本文中appID=order-processor,topic=orders 本文前提知識:熟悉Dapr狀態管理、Dapr發佈訂閱和Outbox 模式。 Outbo ...
  • 引言 在前幾章我們深度講解了單元測試和集成測試的基礎知識,這一章我們來講解一下代碼覆蓋率,代碼覆蓋率是單元測試運行的度量值,覆蓋率通常以百分比表示,用於衡量代碼被測試覆蓋的程度,幫助開發人員評估測試用例的質量和代碼的健壯性。常見的覆蓋率包括語句覆蓋率(Line Coverage)、分支覆蓋率(Bra ...
  • 前言 本文介紹瞭如何使用S7.NET庫實現對西門子PLC DB塊數據的讀寫,記錄了使用電腦模擬,模擬PLC,自至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1.Windows環境下鏈路層網路訪問的行業標準工具(WinPcap_4_1_3.exe)下載鏈接:http ...
  • 從依賴倒置原則(Dependency Inversion Principle, DIP)到控制反轉(Inversion of Control, IoC)再到依賴註入(Dependency Injection, DI)的演進過程,我們可以理解為一種逐步抽象和解耦的設計思想。這種思想在C#等面向對象的編 ...
  • 關於Python中的私有屬性和私有方法 Python對於類的成員沒有嚴格的訪問控制限制,這與其他面相對對象語言有區別。關於私有屬性和私有方法,有如下要點: 1、通常我們約定,兩個下劃線開頭的屬性是私有的(private)。其他為公共的(public); 2、類內部可以訪問私有屬性(方法); 3、類外 ...
  • C++ 訪問說明符 訪問說明符是 C++ 中控制類成員(屬性和方法)可訪問性的關鍵字。它們用於封裝類數據並保護其免受意外修改或濫用。 三種訪問說明符: public:允許從類外部的任何地方訪問成員。 private:僅允許在類內部訪問成員。 protected:允許在類內部及其派生類中訪問成員。 示 ...
  • 寫這個隨筆說一下C++的static_cast和dynamic_cast用在子類與父類的指針轉換時的一些事宜。首先,【static_cast,dynamic_cast】【父類指針,子類指針】,兩兩一組,共有4種組合:用 static_cast 父類轉子類、用 static_cast 子類轉父類、使用 ...
  • /******************************************************************************************************** * * * 設計雙向鏈表的介面 * * * * Copyright (c) 2023-2 ...
  • 相信接觸過spring做開發的小伙伴們一定使用過@ComponentScan註解 @ComponentScan("com.wangm.lifecycle") public class AppConfig { } @ComponentScan指定basePackage,將包下的類按照一定規則註冊成Be ...
  • 操作系統 :CentOS 7.6_x64 opensips版本: 2.4.9 python版本:2.7.5 python作為腳本語言,使用起來很方便,查了下opensips的文檔,支持使用python腳本寫邏輯代碼。今天整理下CentOS7環境下opensips2.4.9的python模塊筆記及使用 ...