淺談java類和對象
一、面向對象的描述
面向對象是一種現(xiàn)在最為流行的程序設計方法,幾乎現(xiàn)在的所有應用都以面向對象為主了,最早的面向對象的概念實際上是由IBM提出的,在70年代的Smaltalk語言之中進行了應用,后來根據(jù)面向對象的設計思路,才形成C++,而由C++產(chǎn)生了Java這門面向對象的編程語言。
但是在面向對象設計之前,廣泛采用的是面向過程,面向過程只是針對于自己來解決問題。面向過程的操作是以程序的基本功能實現(xiàn)為主,實現(xiàn)之后就完成了,也不考慮修改的可能性,面向對象,更多的是要進行子模塊化的設計,每一個模塊都需要單獨存在,并且可以被重復利用,所以,面向對象的開發(fā)更像是一個具備標準的開發(fā)模式。
在面向對象定義之中,也規(guī)定了一些基本的特征:
封裝:保護內(nèi)部的操作不被破壞。繼承:在原本的基礎之上繼續(xù)進行擴充。多態(tài):在一個指定的范圍之內(nèi)進行概念的轉換。
對于面向對象的開發(fā)來講也分為三個過程:OOA(面向對象分析)、OOD(面向對象設計)、OOP(面向對象編程)。
二、類和對象的基本概念
類:是抽象的概念集合,表示的是一個共性的產(chǎn)物,類之中定義的是屬性和行為(方法)。
對象:對象是一種個性的表示,表示一個獨立的個體,每個對象擁有自己獨立的屬性,依靠屬性來區(qū)分不同對象。
三、類定義和使用
1、簡單認識類
類是對一個對象進行描述的。主要描述對象具有哪些屬性(外觀尺寸等),哪些功能(用來干
啥)。
例如:
一個洗衣機,可以將它看作一個類別。然后屬性就是這個洗衣機的品牌、長、寬、顏色等等。功能:洗衣、烘干等。
2、類的定義
在Java中定義類,使用關鍵字class完成。語法如下:
忽略一下報錯,因為是用的中文。
class為定義類的關鍵字,ClassName為類的名字,{}中為類的主體。
類中包含的內(nèi)容稱為類的成員。屬性主要是用來描述類的,稱之為類的成員屬性或者類成員變量。方法主要說明類具有哪些功能,稱為類的成員方法。
看一個例子:定義一個學生類
采用Java語言將洗衣機類在計算機中定義完成,經(jīng)過javac編譯之后形成.class文件,在JVM的基礎上計算機就可以識別了。
然后呢,類定義完成之后,肯定無法直接使用。如果要使用,必須依靠對象,那么由于類屬于引用數(shù)據(jù)類型,所以對象的產(chǎn)生格式(兩種格式)如下:
1、格式一:聲明并實例化對象。
2、格式二:先聲明對象,然后實例化對象。
引用數(shù)據(jù)類型與基本數(shù)據(jù)類型最大的不同在于:引用數(shù)據(jù)類型需要內(nèi)存的分配和使用。所以,關鍵字new的主要功能就是分配內(nèi)存空間,也就是說,只要使用引用數(shù)據(jù)類型,就要使用關鍵字new來分配內(nèi)存空間。
3、實例化對象
當一個實例化對象產(chǎn)生之后,可以按照如下的方式進行類的操作:
對象.屬性:表示調用類之中的屬性;
對象.方法():表示調用類之中的方法。
舉一個例子,來操作類:
運行結果如下:
因為我沒初始化學號的原因,所以是null。
4、類的三大特性
封裝
封裝從字面上來理解就是包裝的意思,專業(yè)點就是信息隱藏,是指利用抽象數(shù)據(jù)類型將數(shù)據(jù)和基于數(shù)據(jù)的操作封裝在一起,使其構成一個不可分割的獨立實體,數(shù)據(jù)被保護在抽象數(shù)據(jù)類型的內(nèi)部,盡可能地隱藏內(nèi)部的細節(jié),只保留一些對外接口使之與外部發(fā)生聯(lián)系。系統(tǒng)的其他對象只能通過包裹在數(shù)據(jù)外面的已經(jīng)授權的操作來與這個封裝的對象進行交流和交互。也就是說用戶是無需知道對象內(nèi)部的細節(jié),但可以通過該對象對外的提供的接口來訪問該對象。
對于封裝而言,一個對象它所封裝的是自己的屬性和方法,所以它是不需要依賴其他對象就可以完成自己的操作。使用封裝有下面幾個好處:
繼承
繼承是使用已存在的類的定義作為基礎建立新類的技術,新類的定義可以增加新的數(shù)據(jù)或新的功能,也可以用父類的功能,但不能選擇性地繼承父類。通過使用繼承我們能夠非常方便地復用以前的代碼,能夠大大的提高開發(fā)的效率。
繼承所描述的是“is-a”的關系,如果有兩個對象A和B,若可以描述為“A是B”,則可以表示A繼承B,其中B是被繼承者稱之為父類或者超類,A是繼承者稱之為子類或者派生類。
實際上繼承者是被繼承者的特殊化,它除了擁有被繼承者的特性外,還擁有自己獨有的特性。例如貓有抓老鼠、爬樹等其他動物沒有的特性。同時在繼承關系中,繼承者完全可以替換被繼承者,反之則不可以,例如我們可以說貓是動物,但不能說動物是貓就是這個道理,其實對于這個我們將其稱之為“向上轉型”。
多態(tài)
多態(tài)就是指程序中定義的引用變量所指向的具體類型和通過該引用變量發(fā)出的方法調用在編程時并不確定,而是在程序運行期間才確定,即一個引用變量倒底會指向哪個類的實例對象,該引用變量發(fā)出的方法調用到底是哪個類中實現(xiàn)的方法,必須在由程序運行期間才能決定。因為在程序運行時才確定具體的類,這樣,不用修改源程序代碼,就可以讓引用變量綁定到各種不同的類實現(xiàn)上,從而導致該引用調用的具體方法隨之改變,即不修改程序代碼就可以改變程序運行時所綁定的具體代碼,讓程序可以選擇多個運行狀態(tài),這就是多態(tài)性。
所以對于多態(tài)我們可以總結如下:指向子類的父類引用由于向上轉型了,它只能訪問父類中擁有的方法和屬性,而對于子類中存在而父類中不存在的方法,該引用是不能使用的,盡管是重載該方法。若子類重寫了父類中的某些方法,在調用該些方法的時候,必定是使用子類中定義的這些方法(動態(tài)連接、動態(tài)調用)。
對于面向對象而言,多態(tài)分為編譯時多態(tài)和運行時多態(tài)。其中編輯時多態(tài)是靜態(tài)的,主要是指方法的重載,它是根據(jù)參數(shù)列表的不同來區(qū)分不同的函數(shù),通過編輯之后會變成兩個不同的函數(shù),在運行時談不上多態(tài)。而運行時多態(tài)是動態(tài)的,它是通過動態(tài)綁定來實現(xiàn)的,也就是我們所說的多態(tài)性。
到此這篇關于淺談java類和對象的文章就介紹到這了,更多相關java類和對象內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringBoot集成Mybatis-Plus多租戶架構實現(xiàn)
本文主要介紹了SpringBoot集成Mybatis-Plus多租戶架構實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-09-09使用遞歸刪除樹形結構的所有子節(jié)點(java和mysql實現(xiàn))
下面小編就為大家?guī)硪黄褂眠f歸刪除樹形結構的所有子節(jié)點(java和mysql實現(xiàn))。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-10-10Java實現(xiàn)拖拽文件上傳dropzone.js的簡單使用示例代碼
本篇文章主要介紹了Java實現(xiàn)拖拽文件上傳dropzone.js的簡單使用示例代碼,具有一定的參考價值,有興趣的可以了解一下2017-07-07Java實現(xiàn)ATM系統(tǒng)超全面步驟解讀建議收藏
這篇文章主要為大家詳細介紹了用Java實現(xiàn)簡單ATM機功能,文中實現(xiàn)流程寫的非常清晰全面,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03