91嫩草国产线免费观看_欧美日韩中文字幕在线观看_精品精品国产高清a毛片_六月婷婷网 - 一级一级特黄女人精品毛片

java面向?qū)ο蟮奶卣饔心男?/h1> 首頁(yè) > 婚姻繼承2022-09-13 05:51:47

Java 面向?qū)ο蟮奶卣饔心男┓矫?/h2>
JAVA面向?qū)ο笞钪匾奶卣骶褪牵悍庋b,繼承,多態(tài)。

封裝是為了方便調(diào)用類(lèi)庫(kù)里面已經(jīng)寫(xiě)好的函數(shù),繼承是方便對(duì)已有函數(shù)的功能進(jìn)行直接調(diào)用和擴(kuò)展。按照原則,java中已經(jīng)寫(xiě)好的類(lèi)庫(kù)會(huì)被打包成jar包,不允許調(diào)用者更改里面的代碼。

但是你可以通過(guò)其中的抽象類(lèi)或者接口,根據(jù)具體的業(yè)務(wù)邏輯進(jìn)行功能的擴(kuò)展。

多態(tài)的作用是,可以實(shí)現(xiàn)對(duì)繼承對(duì)象的統(tǒng)一調(diào)度,是面向?qū)ο蟮木杷凇?br />
另外,java還有語(yǔ)言簡(jiǎn)單,面向?qū)ο螅推脚_(tái)無(wú)關(guān)性。之所以java可以跨平臺(tái),在于他可以通過(guò)java虛擬機(jī)JVM,將java代碼解釋成該平臺(tái)能理解的語(yǔ)言。

Java面向?qū)ο蟮奶卣魇鞘裁矗?/h2>
有四大基本特征:封裝、抽象、繼承、多態(tài)
面向?qū)ο蟮姆庋b性:即將對(duì)象封裝成 一個(gè)高度自治和相對(duì)封閉的個(gè)體,對(duì)象狀態(tài)(屬性)由這個(gè)對(duì)象自己的行為(方法)來(lái)讀取和改變
舉例:張三這個(gè)人,他的姓名等屬性,要有自己提供的獲取或改變的方法操作 比如private 屬性名,并提供get、set方法。
抽象:就是找出一些事物的相似和共性之處,然后將這些事物歸為一類(lèi),這個(gè)類(lèi)只考慮這些事物的相似之處和共性之處,并且會(huì)忽略與當(dāng)前主題和目標(biāo)無(wú)關(guān)的那些方面,將注意力集中與當(dāng)前目標(biāo)有關(guān)的方面。就是把現(xiàn)實(shí)生活中的對(duì)象抽象為類(lèi)。

舉例:比如每個(gè)人都有姓名、年齡、身高等信息,那么就可以將這些共性提取出來(lái)封裝成一個(gè)類(lèi)。

繼承:在定義和實(shí)現(xiàn)一個(gè)類(lèi)的時(shí)候,可以在一個(gè)已經(jīng)存在的類(lèi)的基礎(chǔ)上來(lái)進(jìn)行,把這個(gè)已經(jīng)存在的類(lèi)所定義的內(nèi)容作為自己的內(nèi)容,并可以加入若干新的內(nèi)容,或修改原來(lái)的方法使之更符合特殊的需要。

舉例:遺產(chǎn)繼承

多態(tài):指程序中定義的引用變量所指向的具體類(lèi)型和通過(guò)該引用變量發(fā)出的方法調(diào)用在編程時(shí)并不確定,而是在程序運(yùn)行期間才確定,即一個(gè)引用變量到底會(huì)指向那個(gè)類(lèi)的實(shí)例對(duì)象,該引用變量發(fā)出的方法調(diào)用到底是哪個(gè)類(lèi)中的實(shí)現(xiàn)方法,必須在程序運(yùn)行期間才能確定。

舉例:Object obj = new XXX();
您好,對(duì)于你的遇到的問(wèn)題,我很高興能為你提供幫助,我之前也遇到過(guò)喲,以下是我的個(gè)人看法,希望能幫助到你,若有錯(cuò)誤,還望見(jiàn)諒!。展開(kāi)全部
計(jì)算機(jī)軟件系統(tǒng)是現(xiàn)實(shí)生活中的業(yè)務(wù)在計(jì)算機(jī)中的映射,而現(xiàn)實(shí)生活中的業(yè)務(wù)其實(shí)就是一個(gè)個(gè)對(duì)象協(xié)作的過(guò)程。面向?qū)ο缶幊叹褪前船F(xiàn)實(shí)業(yè)務(wù)一樣的方式將程序代碼按一個(gè)個(gè)對(duì)象進(jìn)行組織和編寫(xiě),讓計(jì)算機(jī)系統(tǒng)能夠識(shí)別和理解用對(duì)象方式組織和編寫(xiě)的程序代碼,這樣就可以把現(xiàn)實(shí)生活中的業(yè)務(wù)對(duì)象映射到計(jì)算機(jī)系統(tǒng)中。
面向?qū)ο蟮木幊陶Z(yǔ)言有封裝、繼承 、抽象、多態(tài)等4個(gè)主要的特征。
1封裝:
封裝是保證軟件部件具有優(yōu)良的模塊性的基礎(chǔ),封裝的目標(biāo)就是要實(shí)現(xiàn)軟件部件的“高內(nèi)聚、低耦合”,防止程序相互依賴性而帶來(lái)的變動(dòng)影響。在面向?qū)ο蟮木幊陶Z(yǔ)言中,對(duì)象是封裝的最基本單位,面向?qū)ο蟮姆庋b比傳統(tǒng)語(yǔ)言的封裝更為清晰、更為有力。面向?qū)ο蟮姆庋b就是把描述一個(gè)對(duì)象的屬性和行為的代碼封裝在一個(gè)“模塊”中,也就是一個(gè)類(lèi)中,屬性用變量定義,行為用方法進(jìn)行定義,方法可以直接訪問(wèn)同一個(gè)對(duì)象中的屬性。通常情況下,只要記住讓變量和訪問(wèn)這個(gè)變量的方法放在一起,將一個(gè)類(lèi)中的成員變量全部定義成私有的,只有這個(gè)類(lèi)自己的方法才可以訪問(wèn)到這些成員變量,這就基本上實(shí)現(xiàn)對(duì)象的封裝,就很容易找出要分配到這個(gè)類(lèi)上的方法了,就基本上算是會(huì)面向?qū)ο蟮木幊塘恕0盐找粋€(gè)原則:把對(duì)同一事物進(jìn)行操作的方法和相關(guān)的方法放在同一個(gè)類(lèi)中,把方法和它操作的數(shù)據(jù)放在同一個(gè)類(lèi)中。
例如,人要在黑板上畫(huà)圓,這一共涉及三個(gè)對(duì)象:人、黑板、圓,畫(huà)圓的方法要分配給哪個(gè)對(duì)象呢?由于畫(huà)圓需要使用到圓心和半徑,圓心和半徑顯然是圓的屬性,如果將它們?cè)陬?lèi)中定義成了私有的成員變量,那么,畫(huà)圓的方法必須分配給圓,它才能訪問(wèn)到圓心和半徑這兩個(gè)屬性,人以后只是調(diào)用圓的畫(huà)圓方法、表示給圓發(fā)給消息而已,畫(huà)圓這個(gè)方法不應(yīng)該分配在人這個(gè)對(duì)象上,這就是面向?qū)ο蟮姆庋b性,即將對(duì)象封裝成一個(gè)高度自治和相對(duì)封閉的個(gè)體,對(duì)象狀態(tài)(屬性)由這個(gè)對(duì)象自己的行為(方法)來(lái)讀取和改變。一個(gè)更便于理解的例子就是,司機(jī)將火車(chē)剎住了,剎車(chē)的動(dòng)作是分配給司機(jī),還是分配給火車(chē),顯然,應(yīng)該分配給火車(chē),因?yàn)樗緳C(jī)自身是不可能有那么大的力氣將一個(gè)火車(chē)給停下來(lái)的,只有火車(chē)自己才能完成這一動(dòng)作,火車(chē)需要調(diào)用內(nèi)部的離合器和剎車(chē)片等多個(gè)器件協(xié)作才能完成剎車(chē)這個(gè)動(dòng)作,司機(jī)剎車(chē)的過(guò)程只是給火車(chē)發(fā)了一個(gè)消息,通知火車(chē)要執(zhí)行剎車(chē)動(dòng)作而已。

抽象:
抽象就是找出一些事物的相似和共性之處,然后將這些事物歸為一個(gè)類(lèi),這個(gè)類(lèi)只考慮這些事物的相似和共性之處,并且會(huì)忽略與當(dāng)前主題和目標(biāo)無(wú)關(guān)的那些方面,將注意力集中在與當(dāng)前目標(biāo)有關(guān)的方面。例如,看到一只螞蟻和大象,你能夠想象出它們的相同之處,那就是抽象。抽象包括行為抽象和狀態(tài)抽象兩個(gè)方面。例如,定義一個(gè)Person類(lèi),如下:
class Person
{
String name;
int age;
}
人本來(lái)是很復(fù)雜的事物,有很多方面,但因?yàn)楫?dāng)前系統(tǒng)只需要了解人的姓名和年齡,所以上面定義的類(lèi)中只包含姓名和年齡這兩個(gè)屬性,這就是一種抽像,使用抽象可以避免考慮一些與目標(biāo)無(wú)關(guān)的細(xì)節(jié)。我對(duì)抽象的理解就是不要用顯微鏡去看一個(gè)事物的所有方面,這樣涉及的內(nèi)容就太多了,而是要善于劃分問(wèn)題的邊界,當(dāng)前系統(tǒng)需要什么,就只考慮什么。

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

多態(tài):
多態(tài)是指程序中定義的引用變量所指向的具體類(lèi)型和通過(guò)該引用變量發(fā)出的方法調(diào)用在編程時(shí)并不確定,而是在程序運(yùn)行期間才確定,即一個(gè)引用變量倒底會(huì)指向哪個(gè)類(lèi)的實(shí)例對(duì)象,該引用變量發(fā)出的方法調(diào)用到底是哪個(gè)類(lèi)中實(shí)現(xiàn)的方法,必須在由程序運(yùn)行期間才能決定。因?yàn)樵诔绦蜻\(yùn)行時(shí)才確定具體的類(lèi),這樣,不用修改源程序代碼,就可以讓引用變量綁定到各種不同的類(lèi)實(shí)現(xiàn)上,從而導(dǎo)致該引用調(diào)用的具體方法隨之改變,即不修改程序代碼就可以改變程序運(yùn)行時(shí)所綁定的具體代碼,讓程序可以選擇多個(gè)運(yùn)行狀態(tài),這就是多態(tài)性。多態(tài)性增強(qiáng)了軟件的靈活性和擴(kuò)展性。例如,下面代碼中的UserDao是一個(gè)接口,它定義引用變量userDao指向的實(shí)例對(duì)象由daofactory.getDao()在執(zhí)行的時(shí)候返回,有時(shí)候指向的是UserJdbcDao這個(gè)實(shí)現(xiàn),有時(shí)候指向的是UserHibernateDao這個(gè)實(shí)現(xiàn),這樣,不用修改源代碼,就可以改變userDao指向的具體類(lèi)實(shí)現(xiàn),從而導(dǎo)致userDao.insertUser()方法調(diào)用的具體代碼也隨之改變,即有時(shí)候調(diào)用的是UserJdbcDao的insertUser方法,有時(shí)候調(diào)用的是UserHibernateDao的insertUser方法:
UserDao userDao = daofactory.getDao();
userDao.insertUser(user);

如果滿意請(qǐng)給分哦!非常感謝您的耐心觀看,如有幫助請(qǐng)采納,祝生活愉快!謝謝!

面向過(guò)程和面向?qū)ο?/p>

java面向?qū)ο笥心娜齻€(gè)特點(diǎn)啊"?

1.抽象:抽象就是忽略一個(gè)主題中與當(dāng)前目標(biāo)無(wú)關(guān)的那些方面,以便更充分地注意與當(dāng)前目標(biāo)有關(guān)的方面。抽象并不打算了解全部問(wèn)題,而只是選擇其中的一部分,暫時(shí)不用部分細(xì)節(jié)。抽象包括兩個(gè)方面,一是過(guò)程抽象,二是數(shù)據(jù)抽象。2.繼承:繼承是一種聯(lián)結(jié)類(lèi)的層次模型,并且允許和鼓勵(lì)類(lèi)的重用,它提供了一種明確表述共性的方法。對(duì)象的一個(gè)新類(lèi)可以從現(xiàn)有的類(lèi)中派生,這個(gè)過(guò)程稱(chēng)為類(lèi)繼承。新類(lèi)繼承了原始類(lèi)的特性,新類(lèi)稱(chēng)為原始類(lèi)的派生類(lèi)(子類(lèi)),而原始類(lèi)稱(chēng)為新類(lèi)的基類(lèi)(父類(lèi))。派生類(lèi)可以從它的基類(lèi)那里繼承方法和實(shí)例變量,并且類(lèi)可以修改或增加新的方法使之更適合特殊的需要。3.封裝: 封裝是把過(guò)程和數(shù)據(jù)包圍起來(lái),對(duì)數(shù)據(jù)的訪問(wèn)只能通過(guò)已定義的界面。面向?qū)ο笥?jì)算始于這個(gè)基本概念,即現(xiàn)實(shí)世界可以被描繪成一系列完全自治、封裝的對(duì)象,這些對(duì)象通過(guò)一個(gè)受保護(hù)的接口訪問(wèn)其他對(duì)象。

Java中面向?qū)ο蟮娜筇卣魇鞘裁矗?/h2>

封裝

繼承

多態(tài)

面向?qū)ο笕筇匦?br />繼承:一般類(lèi)只能單繼承,內(nèi)部類(lèi)實(shí)現(xiàn)多繼承,接口可以多繼承
封裝:訪問(wèn)權(quán)限控制public > protected > 包 > private 內(nèi)部類(lèi)也是一種封裝
多態(tài):編譯時(shí)多態(tài),體現(xiàn)在向上轉(zhuǎn)型和向下轉(zhuǎn)型,通過(guò)引用類(lèi)型判斷調(diào)用哪個(gè)方法(靜態(tài)分派)。
運(yùn)行時(shí)多態(tài),體現(xiàn)在同名函數(shù)通過(guò)不同參數(shù)實(shí)現(xiàn)多種方法(動(dòng)態(tài)分派)。
希望對(duì)您有所幫助!~
java中的面向?qū)ο蟮娜蠡咎卣魇牵骸痉庋b】、【繼承】、【多態(tài)】

一、封裝
對(duì)象要有一個(gè)明確的邊界;邊界的劃分(對(duì)象各司其職、對(duì)象的粒度、對(duì)象的可重用性)
具體來(lái)說(shuō):
1.屬性: 私有 private(提供set和get方法)
2.方法: 公開(kāi)或私有public/private
3.方法聲明 --> 公開(kāi)
方法實(shí)現(xiàn) --> 隱藏
實(shí)現(xiàn)改變時(shí),對(duì)對(duì)象的使用者沒(méi)有影響。

二、繼承
共性放到父類(lèi),特性放到子類(lèi);子類(lèi),父類(lèi) --> 其實(shí)就是特殊 --> 一般
1.關(guān)鍵字: extends 例如:Dog extends Animal{}
2.java中一個(gè)類(lèi)最多只能有一個(gè)直接的父類(lèi),即單繼承(具有簡(jiǎn)單性、樹(shù)形結(jié)構(gòu)),
C++中是單繼承
java中要實(shí)現(xiàn)多繼承,通過(guò)接口來(lái)實(shí)現(xiàn)。
3.父類(lèi)中所有屬性和方法都能繼承給子類(lèi);父類(lèi)中的私有方法不能繼承給子類(lèi)。
4.java中的訪問(wèn)修飾符

訪問(wèn)修飾符

訪問(wèn)權(quán)限

繼承 

private

本類(lèi)內(nèi)部

不能繼承

default

本類(lèi)+同包

同包子類(lèi)可以繼承

protected

本類(lèi)+同包+不同子包

可以繼承

public

公開(kāi)

可以繼承

5.構(gòu)造對(duì)象過(guò)程
(1)分配空間
(2)遞歸地構(gòu)造父類(lèi)對(duì)象
a. 父類(lèi) 初始化屬性
b. 父類(lèi) 構(gòu)造方法
(3)初始化屬性
(4)調(diào)用構(gòu)造方法

6.super
用法:
super() 調(diào)用父類(lèi)的構(gòu)造方法,只能出現(xiàn)在構(gòu)造方法的第一行
super.方法名 super表示父類(lèi)的對(duì)象,通過(guò)它去調(diào)用父類(lèi)的方法
注意:在寫(xiě)類(lèi)的時(shí)候,一定要寫(xiě)默認(rèn)無(wú)參的構(gòu)造方法,如果一個(gè)構(gòu)造方法的
第一句既不是this(),也不是super()時(shí),那么就會(huì)在這里隱含的調(diào)用
他的父類(lèi)的無(wú)參的構(gòu)造方法,即隱含的有super()。

三、多態(tài)
運(yùn)行時(shí)多態(tài)。
子類(lèi)的對(duì)象放在父類(lèi)的引用中,例如 Animal a=new Dog,子類(lèi)對(duì)象當(dāng)父類(lèi)對(duì)象來(lái)使用。
1.多態(tài)原則:
(1)對(duì)象類(lèi)型不變
(2)只能用引用調(diào)用其引用類(lèi)型中定義的方法
(3)運(yùn)行時(shí),根據(jù)對(duì)象的實(shí)際類(lèi)型去找子類(lèi)覆蓋之后的方法
例子:
有Animal類(lèi)中有eat()和sleep()兩個(gè)方法,sleep()中睡8小時(shí);子類(lèi)Dog中有
eat()方法,sleep()方法中睡6小時(shí),還有wangwang()方法。
現(xiàn)創(chuàng)建Animal a=new Dog(); 不能調(diào)用a.wangwang(),調(diào)用a.sleep()輸出睡6小時(shí)。

2.對(duì)象的強(qiáng)制轉(zhuǎn)換
格式: 引用 instanceof 類(lèi)型
引用所指的對(duì)象是否與類(lèi)相符,返回值boolean值。
用法:
Animal a=new Cat();
if(a instanceof Dog)
{
Dog d=(Dog)a;
d.wangwang();
}
說(shuō)明:如果只有Dog d=(Dog)a;運(yùn)行時(shí)錯(cuò)誤,因?yàn)閍是Cat而不是Dog (多態(tài)原則第一條)

3.多態(tài)的靈活變換
(1)用于參數(shù)列表上:
public void m(A a){} 可以用A類(lèi)的任何子類(lèi)對(duì)象作為參數(shù)
(2)用在返回值上:
public A m(){} 這個(gè)方法可能返回A類(lèi)的任何子類(lèi)對(duì)象
繼承:一般類(lèi)只能單繼承,內(nèi)部類(lèi)實(shí)現(xiàn)多繼承,接口可以多繼承
封裝:訪問(wèn)權(quán)限控制public > protected > 包 > private 內(nèi)部類(lèi)也是一種封裝
多態(tài):編譯時(shí)多態(tài),體現(xiàn)在向上轉(zhuǎn)型和向下轉(zhuǎn)型,通過(guò)引用類(lèi)型判斷調(diào)用哪個(gè)方法(靜態(tài)分派)。
運(yùn)行時(shí)多態(tài),體現(xiàn)在同名函數(shù)通過(guò)不同參數(shù)實(shí)現(xiàn)多種方法(動(dòng)態(tài)分派)。

相關(guān)推薦:

遺棄多久才構(gòu)成遺棄罪(父母扔下孩子多長(zhǎng)時(shí)間是遺棄罪)

如何去處理遺產(chǎn)繼承糾紛(產(chǎn)生遺產(chǎn)繼承糾紛怎么解決)

有效的遺囑必須具備什么(遺囑有效的4個(gè)條件)

如何變更與撤銷(xiāo)遺囑(遺囑可以改嗎)

老年人立遺囑權(quán)(80歲以上老人立遺囑有效條件)

熱門(mén)標(biāo)簽