亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

java語言

Java語言面向對象的4大特征

時間:2024-07-28 13:37:47 java語言 我要投稿
  • 相關推薦

Java語言面向對象的4大特征

  Java是一種面向對象的跨平臺編程語言,簡單易用,功能強大。具有簡單性、面向對象、分布式、健壯性、安全性、平臺的獨立與可移植性、多線程、動態(tài)性等特點,在這篇文章中,我們不討論Java的語言特征,我們來說說Java面向對象的四大特性:封裝、抽象、繼承和多態(tài)。下面是小編精心整理的Java語言面向對象的4大特征,供大家參考借鑒,希望可以幫助到有需要的朋友。

  1、封裝

  封裝就是將抽象得到的數(shù)據(jù)和行為(或功能)相結合,形成一個有機的整體,也就是將數(shù)據(jù)與操作數(shù)據(jù)的源代碼進行有機的結合,形成“類”,其中數(shù)據(jù)和函數(shù)都是類的成員。

  在面向對象語言中,封裝特性是由類來體現(xiàn)的,我們將現(xiàn)實生活中的一類實體定義成類,其中包括屬性和行為(在Java中就是方法),就好像人類,可以具有name,sex,age等屬性,同時也具有eat,sleep等行為,我們在行為中實現(xiàn)一定的功能,也可操作屬性,這是面向對象的封裝特性.

  封裝隱藏了類的內部實現(xiàn)機制,可以在不影響使用的情況下改變類的內部結構,同時也保護了數(shù)據(jù)。對外界而已它的內部細節(jié)是隱藏的,暴露給外界的只是它的訪問方法。封裝的目的是增強安全性和簡化編程,使用者不必了解具體的實現(xiàn)細節(jié),而只是要通過外部接口,一特定的訪問權限來使用類的成員。

  封裝是保證軟件部件具有優(yōu)良的模塊性的基礎,封裝的目標就是要實現(xiàn)軟件部件的“高內聚、低耦合”,防止程序相互依賴性而帶來的變動影響。在面向對象的編程語言中,對象是封裝的最基本單位,面向對象的封裝比傳統(tǒng)語言的封裝更為清晰、更為有力。面向對象的封裝就是把描述一個對象的屬性和行為的代碼封裝在一個“模塊”中,也就是一個類中,屬性用變量定義,行為用方法進行定義,方法可以直接訪問同一個對象中的屬性。

  通常情況下,只要記住讓變量和訪問這個變量的方法放在一起,將一個類中的成員變量全部定義成私有的,只有這個類自己的方法才可以訪問到這些成員變量,這就基本上實現(xiàn)對象的封裝,就很容易找出要分配到這個類上的方法了,就基本上算是會面向對象的編程了。把握一個原則:把對同一事物進行操作的方法和相關的方法放在同一個類中,把方法和它操作的數(shù)據(jù)放在同一個類中。

  例如,人要在黑板上畫圓,這一共涉及三個對象:人、黑板、圓,畫圓的方法要分配給哪個對象呢?由于畫圓需要使用到圓心和半徑,圓心和半徑顯然是圓的屬性,如果將它們在類中定義成了私有的成員變量,那么,畫圓的方法必須分配給圓,它才能訪問到圓心和半徑這兩個屬性,人以后只是調用圓的畫圓方法、表示給圓發(fā)給消息而已,畫圓這個方法不應該分配在人這個對象上,這就是面向對象的封裝性,即將對象封裝成一個高度自治和相對封閉的個體,對象狀態(tài)(屬性)由這個對象自己的行為(方法)來讀取和改變。

  一個更便于理解的例子就是,司機將火車剎住了,剎車的動作是分配給司機,還是分配給火車,顯然,應該分配給火車,因為司機自身是不可能有那么大的力氣將一個火車給停下來的,只有火車自己才能完成這一動作,火車需要調用內部的離合器和剎車片等多個器件協(xié)作才能完成剎車這個動作,司機剎車的過程只是給火車發(fā)了一個消息,通知火車要執(zhí)行剎車動作而已。

  2、抽象

  抽象就是將一類實體的共同特性抽象出來,封裝在一個抽象類中,所以抽象在面向對象語言是由抽象類來體現(xiàn)的。簡單來說,抽象就是找出一些事物的相似和共性之處,然后將這些事物歸為一個類,這個類只考慮這些事物的相似和共性之處,并且會忽略與當前主題和目標無關的那些方面,將注意力集中在與當前目標有關的方面。

  例如,看到一只螞蟻和大象,你能夠想象出它們的相同之處,那就是抽象。抽象類不能實例化,比如鳥就是一個抽象實體,因為抽象實體并不是一個真正的對象,它的屬性還不能完全描述一個對象,所以在語言中體現(xiàn)為抽象類不能實例化。抽象包括行為抽象和狀態(tài)抽象兩個方面。例如,定義一個Person類,如下:

  Class Person {

  String name;

  int age;

  }

  人本來是很復雜的事物,有很多方面,但因為當前系統(tǒng)只需要了解人的姓名和年齡,所以上面定義的類中只包含姓名和年齡這兩個屬性,這就是一種抽像,使用抽象可以避免考慮一些與目標無關的細節(jié)。我對抽象的理解就是不要用顯微鏡去看一個事物的所有方面,這樣涉及的內容就太多了,而是要善于劃分問題的邊界,當前系統(tǒng)需要什么,就只考慮什么。

  3、繼承

  在定義和實現(xiàn)一個類的時候,可以在一個已經(jīng)存在的類的基礎之上來進行,把這個已經(jīng)存在的類所定義的內容作為自己的內容,并可以加入若干新的內容,或修改原來的方法使之更適合特殊的需要,這就是繼承。繼承是子類自動共享父類數(shù)據(jù)和方法的機制,這是類之間的一種關系,提高了軟件的可重用性和可擴展性。

  簡單的說,繼承就是在一個現(xiàn)有類型的基礎上,通過增加新的方法或者重定義已有方法的方式,產(chǎn)生一個新的類型。我們在使用JAVA時編寫的每一個類都是在繼承,因為在JAVA語言中,java.lang.Object類是所有類最根本的基類(或者叫父類、超類),如果我們新定義的一個類沒有明確地指定繼承自哪個基類,那么JAVA就會默認為它是繼承自Object類的。

  4、多態(tài)

  多態(tài)是指程序中定義的引用變量所指向的具體類型和通過該引用變量發(fā)出的方法調用在編程時并不確定,而是在程序運行期間才確定,即一個引用變量倒底會指向哪個類的實例對象,該引用變量發(fā)出的方法調用到底是哪個類中實現(xiàn)的方法,必須在由程序運行期間才能決定。

  因為在程序運行時才確定具體的類,這樣,不用修改源程序代碼,就可以讓引用變量綁定到各種不同的類實現(xiàn)上,從而導致該引用調用的具體方法隨之改變,即不修改程序代碼就可以改變程序運行時所綁定的具體代碼,讓程序可以選擇多個運行狀態(tài),這就是多態(tài)性。多態(tài)性增強了軟件的靈活性和擴展性。可以說,多態(tài)就是通過傳遞給父類對象引用不同的子類對象從而表現(xiàn)出不同的行為,多態(tài)可為程序提供更好的可擴展性,同樣也可以代碼重用。

  例如,下面代碼中的UserDao是一個接口,它定義引用變量userDao指向的實例對象由daofactory.getDao在執(zhí)行的時候返回,有時候指向的是UserJdbcDao這個實現(xiàn),有時候指向的是UserHibernateDao這個實現(xiàn),這樣,不用修改源代碼,就可以改變userDao指向的具體類實現(xiàn),從而導致userDao.User方法調用的具體代碼也隨之改變,即有時候調用的是UserJdbcDao的User方法,有時候調用的是UserHibernateDao的User方法:

  UserDao userDao =daofactory.getDao;

  userDao.User(user);

  程序中定義的引用變量所指向的具體類型和通過該引用變量發(fā)出的方法調用在編程時并不確定,而是在程序運行期間才確定,即一個引用變量倒底會指向哪個類的實例對象,該引用變量發(fā)出的方法調用到底是哪個類中實現(xiàn)的方法,必須在由程序運行期間才能決定。因為在程序運行時才確定具體的類,這樣,不用修改源程序代碼,就可以讓引用變量綁定到各種不同的類實現(xiàn)上,從而導致該引用調用的具體方法隨之改變,即不修改程序代碼就可以改變程序運行時所綁定的具體代碼,讓程序可以選擇多個運行狀態(tài),這就是多態(tài)性。

  方法的重寫Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)。重寫Overriding是父類與子類之間多態(tài)性的一種表現(xiàn),重載Overloading是一個類中多態(tài)性的一種表現(xiàn)。如果在子類中定義某方法與其父類有相同的名稱和參數(shù),我們說該方法被重寫(Overriding)。子類的對象使用這個方法時,將調用子類中的定義,對它而言,父類中的定義如同被“屏蔽”了。如果在一個類中定義了多個同名的方法,它們或有不同的參數(shù)個數(shù)或有不同的參數(shù)類型,則稱為方法的重載(Overloading)。Overloaded的方法是可以改變返回值的類型。方法的重寫Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)。

  以上就是Java語言中面向對象的四大特性:封裝、抽象、繼承和多態(tài),不知道有沒有讓你對Java語言有更深入的認知。

【Java語言面向對象的4大特征】相關文章:

Java面向對象三大特征詳解07-14

java面向對象編程講解06-18

Java中通過final關鍵字面向對象的詳解08-09

Java面向過程教程10-05

PHP面向對象的進階學習09-06

計算機二級考試Java知識點:面向對象初步08-13

Java面試題簡述一下面向對象的”六原則一法則”07-30

JAVA對象創(chuàng)造及內存布局介紹10-09

java序列化對象的技巧09-30

java對象持久化的使用技巧09-23