『壹』 java中面向對象到底是什麼意思
一.面向對象:
1.何謂對象:在面向對象程序設計中,我們將問題空間中的元素以及他們在方案空間中的的表示物稱作對象(object)
Alan Kay總結了smalltalk中對象的5大基本特徵:
所有的東西都是對象。
程序是一大堆對象的集合,他們通過消息傳遞,各個對象之間知道要做些什麼。
每個對象都分配有自己的存儲空間,可容納其他對象。
每個對象都有一個類型。
同一類的所有對象能接收相同的消息。
-----而所有的編程語言的最終目的是提供一種抽象方法----
2.對象的介面:我們向對象發出請求是通過它的介面定義的,對象的類型決定了它的介面形式。
3.OOP中唯一關心的:就是介面是什麼,就像汽車的發動機一樣,我們不必要知道它的結構是什麼,只要它能工作就行了。所有的程序是由一定的屬性(數據)和行為(方法)組成的,不同的對象訪問通過函數調用來完成,對象間的所有交流都是通過方法調用,通過對封裝數據對象,很大程度上提高復用率。
4.對象的3個主要特徵:
behavior—說明這個對象能做什麼。
State—當對象施加方法時對象的反映。
Identity---與其他相似行為對象的區分標志,每一個對象有唯一的indentity, 而這3者是相互影響的。
5.面向對象中最重要的思想就是類,類是模板是藍圖,從類中構造一個對象,即創建了一個類的實例。(類好比一個建材市場,其中有許多子類--各種各樣的裝飾材料,而我們裝修自己的房子就要選擇我們需要的材料,(為了建立我們自己的程序,我們必須選 擇我們需要的類)這個比喻可以很形象的解釋類是什麼。
6.類之間的關系:
依賴關系:use-a A類中的一個方法操作了另一個類中的對象。
聚合關系:has-a A類中的對象包含B類的對象。
繼承關系:is-a A繼承了B類,此時A類不僅有了B類的方法,還加入了自己的方法。以便我們創建我們自己需要的對象。
Java中定義的每一個類都必須繼承另一個類,使用關鍵字extends,如果一個類在定義中不現實使用關鍵字extends,這個類就會隱式繼承Object類。Object類又叫根超類,或基類。,我們從根超類繼承來的叫子類。Java中每個類都是根超類的子類。
8.介面(interface)規定了可對特定的對象發出哪些請求。
9.繼承=重新使用介面:創建出一個數據類型後,當需要新建立一個數據類型去實現相同的功能,是很沒有意義的一件事,此時對其克隆後,再根據情況改進實現自己的目的就是繼承。
10.封裝:就是把數據和行為結合在一起在一個包中,並對對象使用者隱藏數據的實現過程。Java用3個關鍵字來設置邊界,從而進行對數據的隱藏。Public(共有)的定義任何人都可使用.private(私有)意味著除你自己,類型創建者及那個類型的內部函數成員可以訪問外其他任何人使用都會產生錯誤。Friendly(友好)
意味在包(package)中是可以訪問的。(以上過程也可叫方案隱藏)
11.引用(Handle)操控對象:
當創建一個引用時必須要對其進行初始化
例: String s=」happy」(未建立連接)
String s=new string(「happy」)與一個新的對象連接使用new 。此句建立了一個引用,並且連接引用並初始化對象 賦值字元串「happy」.
12.對象的創建及存在時間:數據存放的地點
1:寄存器-速度快,數量少,在cpu內部,我們對寄存器沒有控制權。
2:堆棧:駐留長規內存中,堆棧指針下移建立新的內存,上移釋放內存。
3:堆:常用內存池,保存對象,有極大的靈活性,java的數據就存放在此,但是要以時間及效率為代價。Java的對象建立是在程序運行時才決定。而c++是在設計時建立對象。
對象的生存時間(lifetime)java提出的垃圾收集器可以很好的發現無須再用的對象,使用GC(grabage collector)垃圾收集器。清除對象,釋放內存。
為此我們就要付出一定的運行期的開銷。
13.在此我們就會有這樣一個印象,一個程序只是一系列對象的集合,他們的方法將其他對象作為自己的變數使用.
14.主要類型: java的主要類型有:boolean,char,byte,short,int,long,float,double,void.這些主類型的大小都不隨機器的結構變化而變化,提供了java很好的可移植性.
15.欄位方法:欄位又叫數據成員,成員函數又叫方法,java的全部工作就是定義類,製作累得對象及發送消息.
16.一個程序只是一系列對象的集合,他們的方法將其他的對象作為自己的變數使用,而且將消息發給那些對象.
17.名字的可見性:為了使名字不重復,作者可以定義自己的庫,一般用自己域名的倒寫形式 如: COM.:Leeak.utility.foidles
18.static關鍵字:即使沒有創建對象,也需要一愕能調用的方法,此時可以使用static
19.java.lang默認自動的導入每個java程序中
20.OOP中對象使對屬性和方法的封裝,對象具有信息的隱蔽的性質,對細節的隱藏,對象只需要知道去這樣做,而不知道如何做的細節,類的方法應謹慎控制對java數據的訪問,可以用get讀取方法,用set修改方法.
21:pakage:Java API中每個類和介面屬於一個特定的包,包實際上市對類和介面進行組織的目錄結構,提供了一種軟體復用機制.
22.創建可復用的類得步驟:1.定義一個public類
2.選擇一個包名,並把pakage語句加到可復用的類的源碼中.
3.編譯這個類.
4.把可復用的類導入其他程序中即可.
23.java中提出在類定義的括弧外的僅有2個語句,pakage和import.
24.軟體的復用性,軟體的復用性就是利用紫的已有的,定義良好的的經過仔細測試的文檔清晰的可移植的易於獲得的軟體構件開發新的軟體.
以上就是java面向對象的一些基本術語的概述,其中的有些部分可以擴展的更深,看過think in java的 朋友就會有此種感覺.此文章向對初學者闡述了面向對象的基本概念.對已是java程序員的朋友可以對他們的基本知識做以回顧.
『貳』 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變數就引用了該實體。(指向了該對象)
『肆』 介紹一下java的面向對象
1、面向對象
面向對象(Object Oriented)是一種新興的程序設計方法,或者是一種新的程序設計規范(paradigm),其基本思想是使用對象、類、繼承、封裝、多態等基本概念來進行程序設計。從現實世界中客觀存在的事物(即對象)出發來構造軟體系統,並且在系統構造中盡可能運用人類的自然思維方式。
2、對象
對象是系統中用來描述客觀事物的一個實體,它是構成系統的一個基本單位。一個對象由一組屬性和對這組屬性進行操作的一組服務組成。
類的實例化可生成對象,一個對象的生命周期包括三個階段:生成、使用、消除。
當不存在對一個對象的引用時,該對象成為一個無用對象。Java的垃圾收集器自動掃描對象的動態內存區,把沒有引用的對象作為垃圾收集起來並釋放。當系統內存用盡或調用System.gc( )要求垃圾回收時,垃圾回收線程與系統同步運行。
3、類
類是具有相同屬性和方法的一組對象的集合,它為屬於該類的所有對象提供了統一的抽象描述,其內部包括屬性和方法兩個主要部分。在面向對象的編程語言中,類是一個獨立的程序單位,它應該有一個類名並包括屬性和方法兩個主要部分。
Java中的類實現包括兩個部分:類聲明和類體。
類聲明
繼承
子類的對象擁有父類的全部屬性與方法,稱作子類對父類的繼承。
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中已經寫好的類庫會被打包成jar包,不允許調用者更改裡面的代碼。
但是你可以通過其中的抽象類或者介面,根據具體的業務邏輯進行功能的擴展。
多態的作用是,可以實現對繼承對象的統一調度,是面向對象的精髓所在。
java面向對象就比如像是蛋糕與蛋糕模子,我們操作的類就比作蛋糕模子,我們操作的對象就比作蛋糕,我們所操作的所以程序都是針對對象的,也就是蛋糕。
『柒』 java中 什麼是面向對象 怎麼理解能否舉例例子 通俗易懂說明,謝謝
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變數就引用了該實體。(指向了該對象)
『玖』 我要演講Java面向對象,哪位大神可以給我一份相關的PPT
對於初學者而言,你的理解是正確的。如果你想對面向對象的設計思想有更深一步的了解。建議你去學習《設計模式》這本經典的著作。