06 面向對象

来源:https://www.cnblogs.com/aknife/archive/2019/04/29/10788475.html
-Advertisement-
Play Games

1.1 你是如何認識新事物的? 一般而言,從過往的見多的事物中,總結->推斷->所屬類別->認知行為。 1.2 類(Class)的概念 類是對一組具有共同特征和行為的對象的抽象描述。 理解 [1]類是專門用於描述現實生活中的事物的。 [2]類描述的事物都具有共同的特征和行為。 [3]類就是我們通常所 ...


 

 

1.1 你是如何認識新事物的?

一般而言,過往的見多的事物中,總結->推斷->所屬類別->認知行為。

 

1.2 (Class)的概念

類是對一組具有共同特征和行為的對象的抽象描述。

理解

[1]專門用於描述現實生活中的事物的。

[2]類描述的事物都具有共同的特征和行為。

[3]類就是我們通常所說 “類型” ,描述的是一個群體概念對群體性概念是一個抽象描述

 

案例: 高富帥、白富美、屌絲沙雕

 

為什麼要提出類的概念?

現實生活中,提出類的概念就是為了認知識別事物

 

類可以快速生成對象,類是對象的抽象描述

 

1.3 對象(Object)的概念

對象是類的一個具體實現對象表示的是一個獨立的,唯一的個體。

 

對象的特征:

[1] 獨立的,唯一的 => 對象和對象之間是相互獨立的,沒有任何關係。即使同一類型的對象。

[2] 對象承載的數據一定是不同的。

[3] 對象描述的是個體對象具體的。特指某一個具體的事物。

[4] 對象一定具有類所屬的特性和行為。

 

1.4 屬性

程式中,類或者對象的特征稱為屬性。屬性用於的數據叫做屬性值。例如:對象小明擁有姓名屬性,小明就是姓名的屬性值。

 

1.5 方法

程式,或者對象的行為稱為方法。

 

在程式類和對象的表述:

類是一組具有相同屬性和方法的對象的抽象描述。

對象是一個具體的事物,具有一組屬性和方法。

 

1.6 如何定義一個類?

創建->創建對象->解決具體業務問題

 

語法

[修飾符] class 類名{
   屬性
   方法
}

 


定義一個Student 

 

public class Student{
// 學生的特性(屬性)

String id;
String name;
int age;
char gender;

public void sayHi(){
System.out.println("我的姓名:"+name+",我的學號:"+id);
}
}

 

 


總結

[1]類的定義包含兩部分成員,一個是屬性、一個是方法。

屬性因為定義的位置,也稱為成員變數,本質上屬性就是的一個成員方法也成員類的成員方法。

[2]屬性的作用域是整個類型,所以方法中可以直接訪問屬性。

[3]在定義成員變數時可以對其初始化。如果不對其初始化,Java使用預設的值對其初始化。(數值:0,0.0   char:\u0000,  boolean:false,  所有引用類型:null)  

[4]屬性定義格式:

[修飾符]   屬性類型   屬性名 [=預設值]

 


  

面向對象的語言中,整個程式的基本單位是類,通過類來組織程式。

所有的類聲明的變數都是引用數據類型引用數據類型必須通過new申請空間。

 

1.7 創建對象的過程

創建一個對象分為兩個步驟:聲明對象,然後申請記憶體空間。

// 【1】聲明s1的變數,s1是一個Student類型的對象
// s1是Student的其中一個實例
// Student s1 = null;

// 【2】給s1申請記憶體空間(實例化的過程)
//s1 = new Student();

 


通過.來訪問對象的成員(屬性方法)通過實例結合.可以訪問屬性/成員變數,所有屬性/成員變數也稱為實例變數。 

 

public class Test01{

public static void main(String[] args){
Student s1 = new Student();
//s1.name = "二狗";
//s1.id = "001";
//s1.age = 20;
s1.sayHi();
//System.out.println(s1);

Student s2 = new Student();

//s2.name = "三狗";
//s2.id = "001";
//s2.age = 20;
s2.sayHi();
//System.out.println(s2);
}
}

 


對象記憶體圖 

1.8 如何利用面向對象思維思考問題?

需求:手機播放Mp3—最炫名族風

public class Phone{
String brand;
String type;
float price;
String color;
public void start(){
System.out.println(brand+":"+type+" start...");
}
public void stop(){
System.out.println(brand+":"+type+" stop...");
}
public void play(Music music){
System.out.println(brand+":"+type+" play:"+music.name);
System.out.println(music.singer);
music.friendlyTime();
System.out.println(music.content);
}
}

 

public class Music{
String name;
String category;
String content;
String singer;
int time; // 單位是秒
public void friendlyTime(){

int h,m,s;
h = time / 3600;
m = time % 3600 / 60;
s = time % 60;
System.out.println("時長:" + ((h>0) ? (h+":"):"") +m+":"+s);
}
}

 

public class Test03{
public static void main(String[] args){

Phone phone = new Phone();
phone.brand = "Apple";
phone.type = "iPhone x";
phone.price = 10000.0f;

Music music = new Music();
music.name = "最炫名族風";
music.singer = "鳳凰傳奇";
music.time = 151;
music.content = "蒼茫的天涯是我的愛\n蒼茫的天涯是我的愛\n蒼茫的天涯是我的愛";

phone.play(music);
}
}

 


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

-Advertisement-
Play Games
更多相關文章
  • 一、關於session session是另一種記錄客戶狀態的機制,與cookie保存在客戶端瀏覽器不同,session保存在伺服器當中;當客戶端訪問伺服器時,伺服器會生成一個session對象,對象中保存的是key:value值,同時伺服器會將key傳回給客戶端的cookie當中;當用戶第二次訪問服 ...
  • 前言 該筆記只是為了記錄以前開發使用的方式。 處理命名空間namespace extend及base命名下的常用方法 base下的DOM操作 base下的event事件 base下的array數組 base下的string字元串 base下的cookie操作 base下的date日期操作 base下 ...
  • 在前端學習過程中,涉及到路徑的問題非常多,相對路徑,絕對路徑等。有時候明明覺得沒問題,但是還是會出錯。或者說線下沒問題,但是到了線上就出現問題,因此弄懂路徑問題,非常關鍵。我們需要知道為什麼這個地方既可以使用相對路徑,又可以使用絕對路徑,為什麼有些地方只能使用絕對路徑。 一、Node.js中載入模塊 ...
  • 實驗環境:docker + openresty 我限制的5秒鐘內允許訪問兩次效果圖: default.conf 代碼如下: ...
  • 一、封裝 封裝:是面向對象方法的重要原則,就是把對象的屬性和行為(數據)結合為一個獨立的整體,並儘可能隱藏對象的內部實現細節,就是把不想告訴或者不該告訴別人的東西隱藏起來,把可以告訴別人的公開,別人只能用我提供的功能實現需求,而不知道是如何實現的。增加安全性 以上 Person 類封裝 name、g ...
  • 文章首發: "結構型模式:裝飾模式" 七大結構型模式之四:裝飾模式。 簡介 姓名 :裝飾模式 英文名 :Decorator Pattern 價值觀 :人靠衣裝,類靠裝飾 個人介紹 : Attach additional responsibilities to an object dynamicall ...
  • 這幾天在家,複習了了一下 Java SE ,到面向對象那邊找了個簡單數組項目做了一下,還是有收穫的。 只為記錄,好記性不如爛筆頭 有誤請指正 ありがとうございます。 我的公眾號 作者:晨鐘暮鼓c個人微信公眾號:程式猿的月光寶盒 1.首先,項目是客戶信息管理系統,需求如下: 2.涉及知識點 Ø 類結構 ...
  • 鑒於最近跟小伙伴聊了很多PHP架構發展方向的問題,相關技術整理了一下,也順便規划了一下自己的2019年。 一.常用的設計模式以及使用場景 以下是我用到過的 工廠,單例,策略,註冊,適配,觀察者,原型,裝飾器,facade,loc,pipeline 二.閱讀一個框架源碼 例如:laravel 三.常用 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...