java面相對象
㈠ 介紹一下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中面向對象的三大特徵是什麼
面向對象三大特性
繼承:一般類只能單繼承,內部類實現多繼承,介面可以多繼承
封裝:訪問許可權控制public > protected > 包 > private 內部類也是一種封裝
多態:編譯時多態,體現在向上轉型和向下轉型,通過引用類型判斷調用哪個方法(靜態分派)。
運行時多態,體現在同名函數通過不同參數實現多種方法(動態分派)。
希望對您有所幫助!~
㈢ 在JAVA中什麼是面向對象的程序設計方法有哪些主要特徵
答:Java是面向對象的程序設計語言,從面向對象這個角度看,體現了如下三個特點:
①封裝性
面向對象的程序設計語言都是把數據和處理數據的操作結合在一起而構成一個整體,這就是對象。對象的使用者只能看到對象的外部特性,比如,其主要功能、如何調用等,而看不到內部如何實現這些功能。作為面向對象的程序設計語言,程序中的數據就是變數,程序對數據作處理則稱為方法。變數和方法都被封裝在對象中。所以,一個對象就是變數和方法的集合,其中變數表明這個對象的狀態,方法實現這個對象所具有的行為,而且在程序中將這些變數和方法進行封裝,使它們成為一個模塊,再用一個名字來代表這個模塊。這樣,以後的更高層的程序設計中,就不必關心某個對象的行為到底是怎樣實現的。可見,將對象封裝就是為了使模塊盡可能少地展現其內部細節,而只是以一種界面來面向外部。
對象的封裝性減少了程序各部分之間的依賴,使程序的復雜性降低,而可靠性提高,並便於修改。
②繼承性
面向對象的程序設計中,對象是從類創建出來的,這一點即將在下面的解答中說明。在
Java中,許多類組成層次化結構。一個類的上一層稱為父類,而下一層稱為子類。一個類可以繼承其父類的變數和方法,而且這種繼承具有傳遞性。就是說,一個類可以繼承其上一層和其再上一層的變數和方法。這種可傳遞的繼承性使得下層多個相似的對象可以共享上層類的數據和程序代碼,而子類又可以在繼承父類的基礎上增添新的內容和功能。這種代碼共享和代碼可增添的繼承特性使Java既靈活方便又提高效率。
③通信相關性
一個對象往往涉及多個行為。體現在程序設計中,一個對象往往包含多個方法,每一個方法對應一個行為。所以,一個對象完成某個動作也就是程序執行相應的方法。於是,就涉及對象之間通過交互來實現復雜的行為,這叫對象之間的通信。
利用通信可以實現一個對象往另一個對象的信息傳遞。信息傳遞涉及三個要素;一是信息接收對象;二是接收對象中用哪個方法完成指定的動作;三是此方法需要的參數。由於信息傳遞的要素非常清晰,所以用在編程中也將很方便。
這種通信相關性使許多復雜功能得以實現,卻又能避免編程的錯綜復雜。
㈣ Java中面向對象的特徵有哪些
有四大基本特徵:封裝、抽象、繼承、多態
面向對象的封裝性:即將對象封裝成 一個高度自治和相對封閉的個體,對象狀態(屬性)由這個對象自己的行為(方法)來讀取和改變
抽象:就是找出一些事物的相似和共性之處,然後將這些事物歸為一類,這個類只考慮這些事物的相似之處和共性之處,並且會忽略與當前主題和目標無關的那些方面,將注意力集中與當前目標有關的方面。就是把現實生活中的對象抽象為類。
繼承:在定義和實現一個類的時候,可以在一個已經存在的類的基礎上來進行,把這個已經存在的類所定義的內容作為自己的內容,並可以加入若干新的內容,或修改原來的方法使之更符合特殊的需要。
多態:指程序中定義的引用變數所指向的具體類型和通過該引用變數發出的方法調用在編程時並不確定,而是在程序運行期間才確定,即一個引用變數到底會指向那個類的實例對象,該引用變數發出的方法調用到底是哪個類中的實現方法,必須在程序運行期間才能確定。
㈤ Java中面向對象到底是什麼意思求解,謝謝。
Java面向對象思想和三大特性
面向對象:
1、面向對象
面向對象是一種程序設計思想,計算機程序的設計實質上就是將現實中的一些事物的特徵抽離出來描述成一些計算機事件的過程,這種抽象的過程中,我們把具體的事物封裝成一個一個的整體進行描述,使被描述的對象具備一些系統性、整體性的的行為和特徵,我們把這種設計思想稱為面向對象。
2、面向對象與面向過程
2.1、面向過程是早期的程序語言設計思想,該思想強調事物的行為細節,即程序的設計不需要封裝成一個個的整體,而是將整個程序描述成一個行為,所有行為細節都按照固定方式一步一步的執行,執行程序就是執行某一行為的過程。
2.2、面向對象和面向過程都是一種思想,面向對象是相對於面向過程而言的,
面向過程強調的是具體的功能行為,而面向對象將功能封裝進對象,強調具備了功能的對象,面向對象是基於面向過程的,但面向對象思想更接近於現實場景。
三大特性:
1、封裝
1.1、封裝是指:隱藏對象的屬性和實現細節,僅對外提供公共訪問方式
1.2、封裝的好處:
(1)將外界的變化隔離,使程序具備獨立、安全和穩定性。
(2)便於設計者使用,提高代碼的復用性
1.3、封裝的原則
(1)將不需要對外提供的內容都隱藏起來
(2)把實現細節隱藏,提供可以對其進行訪問公共的方式
1.4、封裝的方式
將某一功能、屬性抽離出來,獨立寫成單獨的方法或類
設置訪問許可權
(1)設置訪問許可權可以限定該功能或屬性可以被特定的訪問者訪問,保證了程序的安全性和功能的穩定性。
(2)java對類和類中成員都定義了特定的訪問修飾符
類:public(公共的)、default(默認的,不寫就默認是它)
類中成員:public、protected、default(默認的)、private
註:類的訪問修飾符可以不寫(默認的),也可以寫public(公共的),一個java文件中只能有一個被public修飾的類,且被public修飾的類類名必須要跟文件名一致(包括大小寫一致),否則編譯會出錯,為了方便閱讀,類名的命名規范是單詞的首字母大寫,多個單片語成的類名每個單詞的首字母都大寫
2、繼承
2.1、繼承是從已有的類中派生出新的類,新的類能吸收已有類的數據屬性和行為,並能擴展新的功能,或者說將事物的共性的功能和屬性抽取出來定義成一個父類,讓後來具有更多樣化實現的子類繼承父類。
2.2、繼承的作用:
(1)父類具備的方法子類可以直接繼承過來,不用重新書寫,提高了代碼的復用性
(2)讓類與類之間產生關系,有了關系才有多態的實現
(3)Java中只支持單繼承,不支持多繼承,因為多繼承存在安全隱患(當多個父類存在同個功能時,子類不確定要運行哪一個),Java支持多層繼承,即父類還可以繼承其他類,java用另一種機制解決單繼承的局限性,即多實現
2.3、對繼承體系的使用
(1)想要使用體系,應該先查閱父類,因為父類定義了該體系的共性功能,了解了父類的功能,就基本可以使用該體系的功能了
(2)在具體調用時,要創建子類的對象,因為有可能當父類是抽象類時父類不能創建對象,而且子類具備更豐富、更具體的功能實現
2.4繼承的特點
2.4.1覆蓋(重寫)
2.4.1.1如果子父類中的成員一致時,子類成員會覆蓋父類成員
2.4.1.2當子類繼承父類時,沿襲父類的功能到子類中,但子類對該功能的實現細節不一致,子類可以保留父類對該功能的定義,重寫功能的內容
2.4.1.3覆蓋與重載:重載只看參數列表,其他一致參數列表不一致為重載,而重寫子父類的參數必須要一致
2.4.2this與super
this表示當前對象的引用,super表示當前對象父類的引用
2.5子父類中的構造函數
2.5.1構造函數不能重寫
2.5.1.1構造函數第一行有一條隱式的語句super()/this()
2.5.1.2在對子類對象進行初始化時,父類構造函數也會運行,因為子類中的構造函數默認第一行有一條隱式的super()語句,這樣方便子類構造時先獲取到父類的共性屬性
2.5.1.3super()一定要定義在子類構造函數的第一行,當沒有默認的空參數構造函數,要手動指定
2.6、注意事項:
2.6.1千萬別為了獲取其他類中的功能而繼承,必須是類與類間有所屬關系才可以繼承。
2.6.2子類覆蓋父類時必須保證子類許可權大於等於父類,才可以覆蓋,否則編譯失敗
2.6.3子類靜態成員只能覆蓋父類靜態成員
2.7final關鍵字
2.7.1final關鍵字可以修飾類、函數和變數
2.7.2被final修飾的類不可以被繼承(繼承打破了封裝性)
2.7.3被final修飾的方法不可以被復寫
2.7.4被final修飾的變數只能被賦值一次,既可以修飾成員變數,也可以修飾
2.8Object類
2.8.1java中有一個特殊的類,Object類,它是所有對象的超類(根類),Object類中定義了所有對象的共性成員
2.8.2Object類中的方法
equals()比較兩個對象是否相同
toString()返回該對象的字元串表示形式
getClass()獲取該對象對應的位元組碼文件對象
hasCode()獲取該對象的哈希碼值
2.9類間的體系關系
繼承、聚集(聚合)、組合
2.9.1繼承:
指的是一個類繼承另外的一個類的功能,並增加它自己的新功能或改寫舊有功能的具體實現,繼承是類與類之間最常見的關系。
2.9.2聚合:
指的是整體與部分的關系。通常在定義一個整體類後,再去分析這個整體類的組成結構。從而找出一些組成類,該整體類和組成類之間就形成了聚合關系。例如足球隊中的足球隊員就是聚合關系。
2.9.3組合:
也表示類之間整體和部分的關系,但是組合關系中部分和整體具有統一的生存期。一旦整體對象不存在,部分對象也將不存在。部分對象與整體對象之間具有共生死的關系。例如人的各個身體器官之間的關系。
3、多態
3.1、多態的定義;某一類事物具備的多種表現形態(貓、狗和動物)
3.2、java中多態的表現形式
父類的引用指向自己的子類對象
父類的引用接收自己的子類對象
3.3、多態的前提
必須是類與類之間有關系,要麼繼承,要麼實現
子父類間的成員存在覆蓋
3.4、多態的好處與缺陷
好處是提高了程序的擴展性,缺陷是只能使用父類的引用訪問父類的方法,無法訪問子類的特有方法。
3.5、多態的應用
類型轉換
向上轉型,自然轉型
向下轉型,強制父類引用向下轉型
3.6、特點
(1)多態中成員函數的特點
編譯時看引用變數所屬的類中是否有方法
運行時看對象所屬類的方法
(2)多態中成員變數的特點
無論編譯或運行時都參看右邊
多態中靜態成員函數的特點
編譯或運行時都參看左邊
3.7、多態的擴展示例
資料庫操作(各種資料庫):定義資料庫的父類型,由哪類型的資料庫調用就由該子類實現其具體操作內容。
我有一個微信公眾號,每天都會分享一些Java相關的干貨文章,還有海量學習資源。
如果你喜歡我的分享,可以用微信搜索「Java團長」或者「javatuanzhang」關注。
㈥ 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程序員的朋友可以對他們的基本知識做以回顧.