張勝利++王鵬
摘 要 在進行相關探討分析的時候,本篇論文主要是通過比較面向對象方法的抽象、封裝等特性在Java和C++中的具體實現(xiàn)方式,并且在這個基礎上研究分析了其中存在的一些主要差異,以此來更加深刻的對面向對象方法進行理解,這樣一來,Java以及C++運用面向對象方法進行程序設計等水平就能在最大程度上得到提升。
【關鍵詞】抽象 面向對象方法 程序 設計 水平 運用
1 抽象性
在面向對象中,其擁有的最為主要的特征就是抽象性,抽象性所包含的意義就是從被研究對象中拋除一些次要特征,這些次要特征一般都是不具備本質或者是與研究主旨沒有任何關系的。之后,我們就需要抽取那些與研究有關的共性內容,同時對其進行適當?shù)挠^察,以此來形成研究問題正確等認識。通常在Java和C++當中,抽象性的實現(xiàn)都是通過類來進行實現(xiàn)的,另外在這兩者中,其包含的類主要具有以下兩個部分:首先拿C++來說,在C++中,它的類主要被稱之為數(shù)據(jù)成員或者是成員函數(shù),而屬性以及方法就是Java中的稱謂,但是在類的設計過程中,對兩者進行程序設計、系統(tǒng)開發(fā),就是類的設計基礎。
但是在Java以及C++實現(xiàn)面向對象的抽象性時,不論是類的設計還是數(shù)組的產生等,都會存在一定的差異,通過適當?shù)姆治鑫覀兊贸?,主要的差異之如下所示?/p>
首先在C++中,由于其需要對面向過程和結構化的c進行兼容,同時又要對面向對象方法給予一定的支持,所以在這樣的情況之下,C++就屬于一種混合類型的面向對象程序設計語言。在C++的程序中,不僅僅有類的存在,同時還存有一些一般函數(shù)存在,而這些一般函數(shù)存在并不屬于類,比如main函數(shù),這就是最為典型的一個例子??墒菍τ贘ava來說,它從一開始就是完全支持面向對象的,所以它具備的面向對象程序設計語言就是較為純粹的,并且在Java的程序中,它的構成部分都是由類構成的,不存在任何不屬于類的方法,包括main方法,在Java程序中也是屬于類的。綜上所述,如果我們站在類來實現(xiàn)面向對象的抽象性來看,那么實現(xiàn)的最徹底的就是Java,它也能在最大程度上對面向對象的抽象性進行體現(xiàn)。
其次,在Java中,它的類屬性是可以具備或者是不具備賦初值的。要是不對其給予賦初值,那么系統(tǒng)就會給出缺省的初值0。但是在C++中,其是不允許給類的數(shù)據(jù)成員賦初值的,而static數(shù)據(jù)成員卻是一個例外。
在進行有關考慮的過程中,如果我們是從抽象性角度進行考慮的,那么類的設計就是具備抽象性的,類的屬性以及數(shù)據(jù)成員所描述的也應該是相似對象的共性,所以其也具備相應的抽象性,但是卻無法給予定初值。舉個例子來說,當我們在進行二維點類設計的過程中,需要對大量相似的具體二維點對象的共性進行抽象,而在這當中,它們的x、y坐標的值都具有一定的差異,但它們都具備相同的共性:都擁有x以及y坐標。所以在這種情況之下,二維點類的設計就可以對x、y坐標進行定義,使其成為屬性成員,但是它們不能有初值。
最后在面向對象方法中,類是不能對實際問題進行解決的,造成這種現(xiàn)象的主要原因就是因為類具有抽象性,所以我們必須讓類產生實例,從另一個方面來說就是讓類產生對象,并且向對象發(fā)送相關的消息。之后對象進行響應,我們就可以通過對象間傳遞的消息等來對實際問題進行解決,這也是面向對象中的含義。
2 封裝性
一般情況下,利用抽象的數(shù)據(jù)類型就是封裝的主要內容,在進行封裝的過程中,它可以有效的將數(shù)據(jù)以及基于數(shù)據(jù)的操作進行綁定,使其成為一個整體。通常而言,數(shù)據(jù)如果只存在于封裝體的內部,那么就可以直接對其進行使用,有關操作可以在封裝體內外使用,要是封裝體的外部想要使用內部的數(shù)據(jù),就必須通過封裝體中被授權的操作,以此來完成間接的使用。其次,在封裝體外部,我們是不需要對數(shù)據(jù)或者操作的具體實現(xiàn)細節(jié)進行了解的,需要了解的一點內容就是封裝體接口提供的功能,這樣一來,數(shù)據(jù)的安全性等就能得到明顯的增強,其簡潔性也會變得越來越明顯。此外,要想將數(shù)據(jù)和操作實現(xiàn)過程中的不可知性稱之為封裝性,那么我們就需要將這種數(shù)據(jù)和基于數(shù)據(jù)的操作進行封裝,讓兩者封裝成為一體,才能達到有關的目的。
不論是在C++還是在Java當中,它們的封裝體描述都是用類描述來完成的,同時在類中,它們可以通過設置訪問權限,來對數(shù)據(jù)和操作進行規(guī)定,這樣一來,數(shù)據(jù)以及操作的使用范圍就得到了相應的規(guī)定,封裝性也就自然而然的達成了。但是有一點需要注意的是,這兩者之間的訪問權限的設置和數(shù)據(jù)操作使用范圍的規(guī)定是存在一定差異的,通過適當?shù)姆治觯覀儗ζ渚哂械牟町愡M行了總結:
首先我們來說C++中具有的訪問權限,在C++中,其具有的訪問權限主要包含公有、保護、私有這三種類型。而在進行類中設置的過程時,公有權限的成員是完全對外開放的,所以類內外都可以直接對其使用。但是在進行保護權限設置的時候,該成員只能存在于該類內當中,并且在該類內中進行使用。而在設置私有權限的過程中,該權限中的成員只可以在該類中或者是該類的友元中進行使用??墒菫榱烁玫膶Ψ庋b性進行體現(xiàn),我們就要對C++采取相應的規(guī)定,在C++中,類的成員如果沒有設置訪問權限的話,那么私有權限就應該為默認的權限。其次,在正常的情況下,我們可以將類中含有的數(shù)據(jù)成員設置成私有權限,公有權限則應該設置成為成員的函數(shù)。
其次與C++不同的是,Java所具有的訪問權限設置是較為復雜的,其訪問權限的種類也與C++有著一定的差異,在Java當中,其含有的訪問權限主要包括公有、保護、私有以及默認權限這四種,去除方法設置訪問權限等,還可以設置的訪問權限就只剩下公有以及默認這兩種訪問權限了。在對屬性以及方法使用的范圍進行確定的時候,我們可以按照類的訪問權限等來完成相關的操作,要是將類的訪問權限設置成為公有的時候,那么該類中公有權限的屬性就可以為所有類使用。但是在進行保護權限的屬性方法設置的時候,我們就可以根據(jù)對象引用的情況來為包中的類進行使用,在類得到定義的時候,包中的類和該類當中包含的所有子類就可以為其使用。endprint
綜上所述我們可以得出,不論是C++還是Java,它們?yōu)榱诉_到封裝性的有關要求,都是通過設置訪問權限以此來達成有關的目的,但是經過一番比較,C++不僅訪問權限的設置比較簡單,使用范圍也較為簡單,所以綜合比較來看的話,C++比Java更加容易理解。但是有一點需要注意的是,C++不光支持了友元的概念,同時也順利的對友元的概念進行了實現(xiàn),可是友元卻在一定程度上對封裝性造成了破壞,由此我們可以看出,在C++中要想使用友元,就必須保持謹慎認真的態(tài)度。
3 繼承性
在面向對象方法當中,最為重要的一種特性就是繼承性,繼承性不僅僅是一種演化的過程,同時也是一種發(fā)展的過程,簡單來說就是利用夸張等,從一個已經知曉的父類出發(fā),以此來創(chuàng)建出一個新的子類,而子類就屬于父類的具體化、延續(xù)等等。
在C++以及Java中,在實現(xiàn)面向對象方法的特性時,最為重點的就是繼承,但是在實現(xiàn)的過程中,兩者還是存在一些差異的。通過分析,我們對兩者之間的差異做出了以下的匯總:
(1)在對父類和子類繼承關系的聲明上,兩者的方式都是截然不同的,C++主要是通過“class B:public A”這種方式進行聲明的,而Java這是采用“class B extends A”的方式。
(2)當繼承存在以后,子類要想順利的對父類當中的成員進行集成,就需要對父類中的成員設置進行考慮,看其是否具有訪問權限,一旦父類的成員被子類集成之后,訪問權限的變化在兩者中都是不同的。
4 總結
綜上所述,本篇論文在進行分析的時候,主要是以面向對象方法中的抽象、封裝等特性角度出發(fā)的,并且通過適當?shù)姆治霰容^,我們得出了Java和C++在實現(xiàn)這些特性時含有的差異。另外,在對這些特性進行實現(xiàn)的時候,不論是實現(xiàn)的程度還是方式,兩者都是存在一定的差異的,根據(jù)更深一步的分析,我們就可以加深對這些特性的理解,從而對程序設計等水平進行有效的提升。
參考文獻
[1]王文龍.Java和C++實現(xiàn)面向對象方法的分析研究[J].喀什大學學報,2017,38(03):56-60.
[2]李健,田立鋒,郭瑞.Java SSH框架在Java Web中的應用[J].電腦與電信,2016(03):69-72.
[3]趙彥.Java課程群網絡教學平臺的構建[J].實驗室研究與探索,2015,34(01):199-204.
[4]陸洲.Java EE核心模式研究[J]. 計算機與數(shù)字工程,2014,42(01):81-84.
作者簡介
張勝利(1995-),男,山西省陽泉市人。大學本科學歷。
王鵬(1996-)男,山西省晉中市人。大學本科學歷。
作者單位
山西農業(yè)大學信息學院 山西省晉中市 030801endprint