java面向對象部分總結,java面向對象的基本特徵

本文目錄一覽:

java面向對象思想如何理解?

從現實世界中客觀存在的事物(即對象)出發來構造軟體系統,並在系統構造中儘可能運用人類的自然思維方式,強調直接以問題域(現實世界)中的事物為中心來思考問題,認識問題,並根據這些事物的本質特點,把它們抽象地表示為系統中的對象,作為系統的基本構成單位(而不是用一些與現實世界中的事物相關比較遠,並且沒有對應關係的其它概念來構造系統)。這可以使系統直接地映射問題域,保持問題域中事物及其相互關係的本來面貌。

它可以有不同層次的理解:

從世界觀的角度可以認為:面向對象的基本哲學是認為世界是由各種各樣具有自己的運動規律和內部狀態的對象所組成的;不同對象之間的相互作用和通訊構成了完整的現實世界。因此,人們應當按照現實世界這個本來面貌來理解世界,直接通過對象及其相互關係來反映世界。這樣建立起來的系統才能符合現實世界的本來面目。

從方法學的角度可以認為:面向對象的方法是面向對象的世界觀在開發方法中的直接運用。它強調系統的結構應該直接與現實世界的結構相對應,應該圍繞現實世界中的對象來構造系統,而不是圍繞功能來構造系統。

從程序設計的角度來看,面向對象的程序設計語言必須有描述對象及其相互之間關係的語言成分。這些程序設計語言可以歸納為以下幾類:系統中一切皆為對象;對象是屬性及其操作的封裝體;對象可按其性質劃分為類,對象成為類的實例;實例關係和繼承關係是對象之間的靜態關係;消息傳遞是對象之間動態聯繫的唯一形式,也是計算的唯一形式;方法是消息的序列。

面向對象

面向對象(Object

Oriented,OO)是當前計算機界關心的重點,它是90年代軟體開發方法的主流。面向對象的概念和應用已超越了程序設計和軟體開發,擴展到很寬的範圍。如資料庫系統、互動式界面、應用結構、應用平台、分散式系統、網路管理結構、CAD技術、人工智慧等領域。

談到面向對象,這方面的文章非常多。但是,明確地給出對象的定義或說明對象的定義的非常少——至少我現在還沒有發現。其初,「面向對象」是專指在程序設計中採用封裝、繼承、抽象等設計方法。可是,這個定義顯然不能再適合現在情況。面向對象的思想已經涉及到軟體開發的各個方面。如,面向對象的分析(OOA,Object

Oriented

Analysis),面向對象的設計(OOD,Object

Oriented

Design)、以及我們經常說的面向對象的編程實現(OOP,Object

Oriented

Programming)。許多有關面向對象的文章都只是講述在面向對象的開發中所需要注意的問題或所採用的比較好的設計方法。看這些文章只有真正懂得什麼是對象,什麼是面向對象,才能最大程度地對自己有所裨益。這一點,恐怕對初學者甚至是從事相關工作多年的人員也會對它們的概念模糊不清。

面向對象是當前計算機界關心的重點,它是90年代軟體開發方法的主流。面向對象的概念和應用已超越了程序設計和軟體開發,擴展到很寬的範圍。如資料庫系統、互動式界面、應用結構、應用平台、分散式系統、網路管理結構、CAD技術、人工智慧等領域。

介紹一下java的面向對象

1、面向對象

面向對象(Object Oriented)是一種新興的程序設計方法,或者是一種新的程序設計規範(paradigm),其基本思想是使用對象、類、繼承、封裝、多態等基本概念來進行程序設計。從現實世界中客觀存在的事物(即對象)出發來構造軟體系統,並且在系統構造中儘可能運用人類的自然思維方式。

2、對象

對象是系統中用來描述客觀事物的一個實體,它是構成系統的一個基本單位。一個對象由一組屬性和對這組屬性進行操作的一組服務組成。

類的實例化可生成對象,一個對象的生命周期包括三個階段:生成、使用、消除。

當不存在對一個對象的引用時,該對象成為一個無用對象。Java的垃圾收集器自動掃描對象的動態內存區,把沒有引用的對象作為垃圾收集起來並釋放。當系統內存用盡或調用System.gc( )要求垃圾回收時,垃圾回收線程與系統同步運行。

3、類

類是具有相同屬性和方法的一組對象的集合,它為屬於該類的所有對象提供了統一的抽象描述,其內部包括屬性和方法兩個主要部分。在面向對象的編程語言中,類是一個獨立的程序單位,它應該有一個類名並包括屬性和方法兩個主要部分。

Java中的類實現包括兩個部分:類聲明和類體。

類聲明

其中,修飾符public,abstract,final 說明了類的屬性,className為類名,superclassName為類的父類的名字,interfaceNameList為類所實現的介面列表。

類體

成員變數限定詞的含義:

static: 靜態變數(類變數)

final: 常量;transient: 暫時性變數,用於對象存檔,用於對象的串列化

volatile: 貢獻變數,用於並發線程的共享

方法的實現也包括兩部分內容:方法聲明和方法體。

方法聲明

方法聲明中的限定詞的含義:

static: 類方法,可通過類名直接調用

abstract: 抽象方法,沒有方法體

final: 方法不能被重寫

native: 集成其它語言的代碼

synchronized: 控制多個並發線程的訪問

方法聲明包括方法名、返回類型和外部參數。其中參數的類型可以是簡單數據類型,也可以是複合數據類型(又稱引用數據類型)。

對於簡單數據類型來說,java實現的是值傳遞,方法接收參數的值,但不能改變這些參數的值。如果要改變參數的值,則用引用數據類型,因為引用數據類型傳遞給方法的是數據在內存中的地址,方法中對數據的操作可以改變數據的值。

方法體

方法體是對方法的實現,它包括局部變數的聲明以及所有合法的Java指令。方法體中聲明的局部變數的作用域在該方法內部。若局部變數與類的成員變數同名,則類的成員變數被隱藏。

為了區別參數和類的成員變數,我們必須使用this。this用在一個方法中引用當前對象,它的值是調用該方法的對象。返回值須與返回類型一致,或者完全相同,或是其子類。當返回類型是介面時,返回值必須實現該介面。

構造方法

構造方法是一個特殊的方法。Java 中的每個類都有構造方法,用來初始化該類的一個對象。

構造方法具有和類名相同的名稱,而且不返回任何數據類型。

重載經常用於構造方法。

構造方法只能由new運算符調用

4、面向對象的基本特性

封裝

封裝性就是儘可能的隱藏對象內部細節,對外形成一道邊界,只保留有限的介面和方法與外界進行交互。封裝的原則是使對象以外的部分不能隨意的訪問和操作對象的內部屬性,從而避免了外界對對象內部屬性的破壞。

可以通過對類的成員設置一定的訪問許可權,實現類中成員的信息隱藏。

private:類中限定為private的成員,只能被這個類本身訪問。如果一個類的構造方法聲明為private,則其它類不能生成該類的一個實例。

default:類中不加任何訪問許可權限定的成員屬於預設的(default)訪問狀態,可以被這個類本身和同一個包中的類所訪問。

protected:類中限定為protected的成員,可以被這個類本身、它的子類(包括同一個包中以及不同包中的子類)和同一個包中的所有其他的類訪問。

public:類中限定為public的成員,可以被所有的類訪問。

繼承

子類的對象擁有父類的全部屬性與方法,稱作子類對父類的繼承。

Java中父類可以擁有多個子類,但是子類只能繼承一個父類,稱為單繼承。

繼承實現了代碼的復用。

Java中所有的類都是通過直接或間接地繼承java.lang.Object類得到的。

子類不能繼承父類中訪問許可權為private的成員變數和方法。

子類可以重寫父類的方法,即命名與父類同名的成員變數。

Java中通過super來實現對父類成員的訪問,super用來引用當前對象的父類。super 的使用有三種情況:

訪問父類被隱藏的成員變數,如:super.variable;

調用父類中被重寫的方法,如:super.Method([paramlist]),super()調用父類構造方法;

調用父類的構造函數,如:super([paramlist]);

多態

對象的多態性是指在父類中定義的屬性或方法被子類繼承之後,可以具有不同的數據類型或表現出不同的行為。這使得同一個屬性或方法在父類及其各個子類中具有不同的語義。例如:”幾何圖形”的”繪圖”方法,”橢圓”和”多邊形”都是”幾何圖”的子類,其”繪圖”方法功能不同。

Java的多態性體現在兩個方面:由方法重載實現的靜態多態性(編譯時多態)和方法重寫實現的動態多態性(運行時多態)。

編譯時多態:在編譯階段,具體調用哪個被重載的方法,編譯器會根據參數的不同來靜態確定調用相應的方法。

運行時多態:由於子類繼承了父類所有的屬性(私有的除外),所以子類對象可以作為父類對象使用。程序中凡是使用父類對象的地方,都可以用子類對象來代替。一個對象可以通過引用子類的實例來調用子類的方法。

重載(Overloading)

方法重載是讓類以統一的方式處理不同數據類型的手段。

一個類中可以創建多個方法,它們具有相同的名字,但具有不同的參數和不同的定義。調用方法時通過傳遞給它們的不同參數個數和參數類型來決定具體使用哪個方法。

返回值類型可以相同也可以不相同,無法以返回型別作為重載函數的區分標準。

重寫(Overriding)

子類對父類的方法進行重新編寫。如果在子類中的方法與其父類有相同的的方法名、返回類型和參數表,我們說該方法被重寫 (Overriding)。

如需父類中原有的方法,可使用super關鍵字,該關鍵字引用了當前類的父類。

子類函數的訪問修飾許可權不能低於父類的。

Java的面向對象思想具體說下

網上應該都有啊

你就是沒時間查

下面是我的理解,不知能否理解

首先要解決

類和對象的關係:類是一類具有共同屬性對象的抽象,對象是類的具體實例

比如:人和日本人

只要是人具有的屬性日本人都具有

日本人繼承了人的所有屬性

所以我們說

日本人也是人;而日本人也有自己特有的屬性

就是他是日本人。這裡,人就是一個類,日本人就是人這個類的對象

面向對象的思想主要體現在:繼承與派生,代碼復用等方面

JAVA中什麼是面向對象

在java的學習中,面向對象應該是java技術的重中之重,雖然在生活中沒有對象可以面對,但在技術中還是要一直接觸面對對象,而且不可避免。今天對面向對象來了一個小總結。

一、面向對象的特點:

1、將複雜的事情簡單化。

2、面向對象將以前的過程中的執行者,變成了指揮者。

3、面向對象這種思想是符合現在人們思考習慣的一種思想。

過程和對象在我們的程序中是如何體現的呢?過程其實就是函數;對象是將函數等一些內容進行了封裝。

二、匿名對象使用場景:

1、當對方法只進行一次調用的時候,可以使用匿名對象。

2、當對象對成員進行多次調用時,不能使用匿名對象。必須給對象起名字。

三、在類中定義其實都稱之為成員。成員有兩種:

1、成員變數:其實對應的就是事物的屬性。

2、成員函數:其實對應的就是事物的行為。

所以,其實定義類,就是在定義成員變數和成員函數。但是在定義前,必須先要對事物進行屬性和行為的分析,才可以用代碼來體現。

四、類中怎麼沒有定義主函數呢?

注意:主函數的存在,僅為該類是否需要獨立運行,如果不需要,主函數是不用定義的。主函數的解釋:保證所在類的獨立運行,是程序的入口,被jvm調用。

五、成員變數和局部變數的區別:

1、成員變數直接定義在類中;局部變數定義在方法中,參數上,語句中。

2、成員變數在這個類中有效;局部變數只在自己所屬的大括弧內有效,大括弧結束,局部變數失去作用域。

3、成員變數存在於堆內存中,隨著對象的產生而存在,消失而消失;局部變數存在於棧內存中,隨著所屬區域的運行而存在,結束而釋放。

六、構造函數和一般函數有什麼區別呢?

1、兩個函數定義格式不同。

2、構造函數是在對象創建時,就被調用,用於初始化,而且初始化動作只執行一次。

一般函數,是對象創建後,需要調用才執行,可以被調用多次。

七、創建一個對象都在內存中做了什麼事情?

1、先將硬碟上指定位置的Person.class文件載入進內存。

2、執行main方法時,在棧內存中開闢了main方法的空間(壓棧-進棧),然後在main方法的棧區分配了一個變數p。

3、在堆內存中開闢一個實體空間,分配了一個內存首地址值。new

4、在該實體空間中進行屬性的空間分配,並進行了默認初始化。

5、對空間中的屬性進行顯示初始化。

6、進行實體的構造代碼塊初始化。

7、調用該實體對應的構造函數,進行構造函數初始化。

8、將首地址賦值給p ,p變數就引用了該實體。(指向了該對象)

原創文章,作者:KXTF,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/134666.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
KXTF的頭像KXTF
上一篇 2024-10-04 00:07
下一篇 2024-10-04 00:07

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean載入過程

    Java Bean載入過程涉及到類載入器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean載入的過程。 一、類載入器 類載入器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字元串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字元串中是否存在多個指定字元: 一、字元串遍歷 字元串是Java編程中非常重要的一種數據類型。要判斷字元串中是否存在多個指定字元…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29
  • Java 8 Group By 會影響排序嗎?

    是的,Java 8中的Group By會對排序產生影響。本文將從多個方面探討Group By對排序的影響。 一、Group By的概述 Group By是SQL中的一種常見操作,它…

    編程 2025-04-29

發表回復

登錄後才能評論