成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

java學(xué)習(xí)(三) —— 面對(duì)對(duì)象

褰辯話 / 953人閱讀

摘要:前言是面對(duì)對(duì)象的語(yǔ)言,因此有必要多帶帶紀(jì)錄下對(duì)象的各種定義和理解。面對(duì)對(duì)象基本概述概述是基于面向過(guò)程的變成思想,是對(duì)面向過(guò)程的一種封裝。面對(duì)對(duì)象開(kāi)發(fā)就是不斷的創(chuàng)建對(duì)象,使用對(duì)象,指揮對(duì)象做事情。面對(duì)對(duì)象設(shè)計(jì)其實(shí)就是在管理和維護(hù)對(duì)象之間的關(guān)系。

前言

java是面對(duì)對(duì)象的語(yǔ)言,因此有必要多帶帶紀(jì)錄下對(duì)象的各種定義和理解。

面對(duì)對(duì)象,主要包括:面向?qū)ο笏枷?,?lèi)與對(duì)象及其使用,對(duì)象的內(nèi)存圖,成員變量和局部變量的區(qū)別,匿名對(duì)象,封裝(private),this關(guān)鍵字,構(gòu)造方法,static關(guān)鍵字。

面對(duì)對(duì)象基本概述

概述:是基于面向過(guò)程的變成思想,是對(duì)面向過(guò)程的一種封裝。

面對(duì)對(duì)象開(kāi)發(fā):就是不斷的創(chuàng)建對(duì)象,使用對(duì)象,指揮對(duì)象做事情。

面對(duì)對(duì)象設(shè)計(jì):其實(shí)就是在管理和維護(hù)對(duì)象之間的關(guān)系。

面對(duì)對(duì)象特征:封裝,繼承,多態(tài)

類(lèi)與對(duì)象的關(guān)系:

(1)類(lèi):一組相關(guān)的屬性和行為的集合
(2)對(duì)象:是該類(lèi)事物的具體體現(xiàn)

匿名對(duì)象:

(1)就是沒(méi)有名字的對(duì)象,是對(duì)象的一種簡(jiǎn)化表示形式
(2)匿名對(duì)象的兩種使用情況:1、對(duì)象調(diào)用方法僅僅一次的時(shí)候 2、作為實(shí)際參數(shù)傳遞

類(lèi)的相關(guān)概述:

Student s = new Student();在內(nèi)存中做了哪些事情?

(1)加載Student.class文件進(jìn)入內(nèi)存
(2)在棧空間為s開(kāi)辟空間
(3)在堆內(nèi)存為學(xué)生對(duì)象開(kāi)辟空間
(4)對(duì)學(xué)生對(duì)象的成員變量進(jìn)行默認(rèn)初始化
(5)對(duì)學(xué)生對(duì)象的成員變量進(jìn)行顯示初始化
(6)通過(guò)構(gòu)造方法對(duì)學(xué)生對(duì)象的成員變量賦值
(7)學(xué)生對(duì)象初始化完畢,把對(duì)象地址賦值給s變量

類(lèi) 基本包括:繼承、多態(tài)、抽象類(lèi)、接口、包和導(dǎo)包、權(quán)限修飾符、內(nèi)部類(lèi)

類(lèi)的繼承

概述:多個(gè)類(lèi)中存在相同屬性和行為時(shí),將這些內(nèi)容抽取到多帶帶一個(gè)類(lèi)中,那么多個(gè)類(lèi)無(wú)需再定義這些屬性和行為,只要繼承這個(gè)類(lèi)即可。

通過(guò)extends這個(gè)關(guān)鍵字可以實(shí)現(xiàn)類(lèi)與類(lèi)到繼承

多帶帶的這個(gè)類(lèi)稱(chēng)為父類(lèi)或者基類(lèi)、超類(lèi),這多個(gè)類(lèi)可以稱(chēng)為子類(lèi)或者派生類(lèi)

有了繼承后,我們定義一個(gè)類(lèi)的時(shí)候,可以在一個(gè)已經(jīng)存在的類(lèi)的基礎(chǔ)上,定義自己的新成員

好處:

(1)提高了代碼的復(fù)用性
(2)提高代碼的維護(hù)性
(3)讓類(lèi)與類(lèi)之間產(chǎn)生了關(guān)系,是多態(tài)的前提
(4)類(lèi)的一個(gè)弊端就是,類(lèi)的耦合性很強(qiáng)

注意事項(xiàng):

(1)子類(lèi)只能繼承父類(lèi)所有非私有成員(成員方法和成員變量)
(2)字類(lèi)不能繼承父類(lèi)的構(gòu)造方法,但是可以通過(guò)super關(guān)鍵字訪問(wèn)父類(lèi)的構(gòu)造方法
(3)不要為類(lèi)部分功能而去繼承

繼承中構(gòu)造方法的關(guān)系:

(1)子類(lèi)中所有的構(gòu)造方法都默認(rèn)會(huì)父類(lèi)中空參數(shù)的構(gòu)造方法
(2)因?yàn)樽宇?lèi)會(huì)繼承父類(lèi)的數(shù)據(jù),可能還會(huì)使用父類(lèi)的數(shù)據(jù)。所以,子類(lèi)初始化之前,一定要先完成父類(lèi)數(shù)據(jù)的初始化
(3)每一個(gè)構(gòu)造方法的第一條語(yǔ)句默認(rèn)是:super()
(4)如果父類(lèi)中沒(méi)有構(gòu)造方法怎么辦:
   【1】子類(lèi)通過(guò)super去顯示調(diào)用父類(lèi)其他的帶參的構(gòu)造方法
   【2】子類(lèi)通過(guò)this調(diào)用本類(lèi)的其他構(gòu)造方法
   【3】一定要注意,super()后者this()必須出現(xiàn)在第一條語(yǔ)句中,否則,就會(huì)有父類(lèi)數(shù)據(jù)的多次初始化

方法重寫(xiě):

(1)概述:子類(lèi)中出現(xiàn)了一個(gè)和父類(lèi)一摸一樣的方法聲明,也被稱(chēng)為方法覆蓋,方法復(fù)寫(xiě)
(2)父類(lèi)中的私有方法不能被重寫(xiě)
(3)子類(lèi)重寫(xiě)父類(lèi)方法時(shí),訪問(wèn)權(quán)限不能更低
(4)父類(lèi)靜態(tài)方法,子類(lèi)也必須通過(guò)靜態(tài)方法進(jìn)行重寫(xiě)

幾個(gè)關(guān)鍵字:static、super、final

static關(guān)鍵字:

(1)可以修飾成員變量和成員方法
(2)特點(diǎn):
     【1】隨著類(lèi)的加載而加載
     【2】?jī)?yōu)先于對(duì)象存在
     【3】被類(lèi)的所有對(duì)象共享
     【4】可以通過(guò)類(lèi)名調(diào)用
(3)注意事項(xiàng):
     【1】在靜態(tài)方法中是沒(méi)有this關(guān)鍵字的
     【2】靜態(tài)方法只能訪問(wèn)靜態(tài)的成員變量和靜態(tài)的成員方法
(4)靜態(tài)變量和成員變量的區(qū)別:
     【1】靜態(tài)變量屬于類(lèi),所以也成為類(lèi)變量;成員變量屬于對(duì)象,所以也稱(chēng)為實(shí)例變量
     【2】靜態(tài)變量存儲(chǔ)在方法區(qū)的靜態(tài)區(qū),成員變量存儲(chǔ)在堆內(nèi)存中
     【3】靜態(tài)變量隨著類(lèi)的加載而加載,隨著類(lèi)的消失而消失;成員變量隨著對(duì)象的創(chuàng)建而存在,隨著對(duì)象的消失而消失
     【4】靜態(tài)變量可以通過(guò)類(lèi)名調(diào)用,也可以通過(guò)對(duì)象調(diào)用;成員變量只能通過(guò)對(duì)象名調(diào)用

super關(guān)鍵字:

(1)super和this關(guān)鍵字的用法很像,this代表本類(lèi)對(duì)應(yīng)的引用,super代表父類(lèi)存儲(chǔ)空間的標(biāo)識(shí)(可以理解為父類(lèi)的引用)
(2)使用super來(lái)引用父類(lèi)的成分,用this來(lái)引用當(dāng)前對(duì)象

final關(guān)鍵字:

(1)final關(guān)鍵字是最終的意思,可以修飾類(lèi)、成員變量、成員方法
(2)修飾類(lèi),類(lèi)不能被繼承
(3)修飾變量,變量就變成了常量,只能被賦值一次
(4)修飾方法,方法不能被重寫(xiě)

多態(tài)

概述:某一個(gè)事物,在不同時(shí)刻表現(xiàn)出來(lái)的不同狀態(tài)

多態(tài)的前提和體現(xiàn):有繼承關(guān)系,有方法重寫(xiě),有父類(lèi)引用直接指向子類(lèi)對(duì)象

好處:

(1)提高程序的維護(hù)性(由繼承保證)
(2)提高程序的擴(kuò)展性(由多態(tài)保證)

弊端:不能訪問(wèn)子類(lèi)特有功能

抽象類(lèi)

概述:一個(gè)沒(méi)有方法體的方法應(yīng)該定義為抽象方法,而類(lèi)中如果有抽象方法,該類(lèi)必須定義為抽象類(lèi)

特點(diǎn):

(1)抽象類(lèi)和抽象方法必須是由abstract關(guān)鍵字修飾
(2)抽象類(lèi)不一定有抽象方法,有抽象方法的類(lèi)一定是抽象類(lèi)
(3)抽象類(lèi)不能實(shí)例化
(4)那么,抽象類(lèi)如何實(shí)例化?按照多態(tài)的方法,由具體的子類(lèi)實(shí)例化
(5)抽象類(lèi)的子類(lèi),要么是抽象類(lèi),要么重寫(xiě)抽象類(lèi)中的所有抽象方法

抽象類(lèi)成員特點(diǎn):

(1)成員變量可以是變量,也可以是常量
(2)有構(gòu)造方法,但是不能實(shí)例化。那么構(gòu)造方法的作用是什么?用戶(hù)子類(lèi)訪問(wèn)父類(lèi)數(shù)據(jù)的初始化
(3)可以有抽象方法,限定子類(lèi)必須完成某些動(dòng)作
(4)也可以有非抽象方法,提高代碼復(fù)用性
(5)抽象方法必須為public或protected(因?yàn)槿绻莗rivate,則不能被子類(lèi)繼承,子類(lèi)便無(wú)法實(shí)現(xiàn)該方法),缺省情況下默認(rèn)為public

接口

概述:英文成為interface,軟件工程中,接口泛指供別人調(diào)用的方法或函數(shù),它是對(duì)行為的抽象

接口特點(diǎn):

(1)使用關(guān)鍵字interface表示:interface 接口名{}
(2)類(lèi)實(shí)現(xiàn)接口用implements表示:class 類(lèi)名 implements 接口名{}
(3)接口不能實(shí)現(xiàn)實(shí)例化,但是可以按照多態(tài)的方式,由具體的子類(lèi)實(shí)例化
(4)接口的子類(lèi):要么是抽象類(lèi),要么重寫(xiě)接口中的所有抽象方法

接口成員特點(diǎn):

(1)成員變量:只能是常量,默認(rèn)修飾符是public、static、final
(2)沒(méi)有構(gòu)造方法,因?yàn)榻涌谥饕菙U(kuò)展功能的,而沒(méi)有具體存在
(3)接口的成員方法只能是抽象方法,默認(rèn)修飾符是public、abstract

類(lèi)與類(lèi)、類(lèi)與接口、接口與接口關(guān)系

類(lèi)與類(lèi):繼承關(guān)系,只能單繼承,但是可以多層繼承

類(lèi)與接口:實(shí)現(xiàn)關(guān)系,可以單實(shí)現(xiàn),也可以多實(shí)現(xiàn)。還可以在繼承一個(gè)類(lèi)多同時(shí)實(shí)現(xiàn)多個(gè)接口

接口與接口:繼承關(guān)系,可以單繼承,也可以多繼承

抽象類(lèi)與接口的區(qū)別:

接口是對(duì)動(dòng)作的抽象,抽象類(lèi)是對(duì)根源的抽象

抽象類(lèi)表示的是這個(gè)對(duì)象是什么,而接口表示的是這個(gè)對(duì)象能做什么

抽象類(lèi)與接口都不能被實(shí)例化,如果要實(shí)例化,抽象類(lèi)變量必須指向?qū)崿F(xiàn)所有抽象方法的子類(lèi)對(duì)象,接口變量必須指向?qū)崿F(xiàn)所有接口方法的類(lèi)對(duì)象

抽象類(lèi)要被子類(lèi)繼承,接口要被類(lèi)實(shí)現(xiàn)

接口只能做方法聲明,抽象類(lèi)中可以做方法聲明,也可做方法實(shí)現(xiàn)

接口中定義的變量只能是公共的靜態(tài)常量,抽象類(lèi)中的變量是普通變量

抽象類(lèi)里邊的抽象方法必須被子類(lèi)所實(shí)現(xiàn),如果子類(lèi)不能全部實(shí)現(xiàn)父類(lèi)抽象方法,那么該子類(lèi)只能是抽象類(lèi)。同理,一個(gè)實(shí)現(xiàn)接口的時(shí)候,如果不能全部實(shí)現(xiàn)接口方法,那么該類(lèi)也只能是抽象類(lèi)

抽象方法只能聲明,不能實(shí)現(xiàn)。接口是設(shè)計(jì)的結(jié)果,抽象類(lèi)是重構(gòu)的結(jié)果

接口可以繼承接口,并可繼承多接口,但是類(lèi)只能單繼承

抽象類(lèi)可以有具體的方法和屬性,接口只能有抽象方法和不可變常量

當(dāng)你關(guān)注一個(gè)事物的本質(zhì)的時(shí)候,用抽象類(lèi);當(dāng)你關(guān)注一個(gè)操作的時(shí)候用接口。

包:package

概述:其實(shí)就是文件夾,對(duì)類(lèi)進(jìn)行分類(lèi)管理

定義:package 包名

注意事項(xiàng):

(1)package語(yǔ)句必須是程序的第一條可執(zhí)行的代碼
(2)package語(yǔ)句在一個(gè)java文件中只能有一個(gè)
(3)如果沒(méi)有package,默認(rèn)表示無(wú)包名

帶包的類(lèi)的編譯和運(yùn)行:

(1)手動(dòng)式:
   【1】javac編譯當(dāng)前類(lèi)文件
   【2】手動(dòng)建立包對(duì)應(yīng)的文件夾
   【3】把編譯生成的class文件放到上一步建立的文件夾下
   【4】通過(guò)java命令執(zhí)行,需要帶包的名稱(chēng)執(zhí)行:java testpackage.HelloWorld
(2)自動(dòng)式:
   【1】javac編譯的時(shí)候帶-d參數(shù)執(zhí)行:javac -d .HelloWorld.java
   【2】通過(guò)java命令執(zhí)行,和手動(dòng)式一樣

導(dǎo)包:

(1)概述:不同包下的類(lèi)之間的訪問(wèn),我們發(fā)現(xiàn),每次使用不同包下的類(lèi)的時(shí)候,都需要加包的全路經(jīng),比較麻煩。這時(shí),java提供了導(dǎo)包功能
(2)導(dǎo)包格式:import 包名.類(lèi)名

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

概述:把類(lèi)定義在其他類(lèi)的內(nèi)部,這個(gè)類(lèi)就被成為內(nèi)部類(lèi)

訪問(wèn)特點(diǎn):

(1)內(nèi)部類(lèi)可以直接訪問(wèn)外部類(lèi)的成員,包括私有
(2)外部類(lèi)要想內(nèi)部類(lèi)的成員,必須創(chuàng)建對(duì)象

內(nèi)部類(lèi)位置:

(1)按照內(nèi)部類(lèi)在類(lèi)中定義的位置不同,可以分為兩種格式:成員位置(成員內(nèi)部類(lèi)),局部位置(局部?jī)?nèi)部類(lèi))
(2)成員內(nèi)部類(lèi):
    【1】常見(jiàn)修飾符:private,static
    【2】被靜態(tài)修飾的成員內(nèi)部類(lèi)只能訪問(wèn)外部類(lèi)的靜態(tài)成員
(3)局部?jī)?nèi)部類(lèi):
    【1】可以直接訪問(wèn)外部類(lèi)的成員
    【2】可以創(chuàng)建內(nèi)部類(lèi)對(duì)象,通過(guò)對(duì)象調(diào)用內(nèi)部類(lèi)方法,來(lái)使用局部?jī)?nèi)部類(lèi)功能
    【3】局部?jī)?nèi)部類(lèi)訪問(wèn)局部變臉必須用final修飾。因?yàn)榫植孔兞繒?huì)隨著方法的調(diào)用完畢而消失,這個(gè)時(shí)候,局部對(duì)象并沒(méi)有立馬從堆內(nèi)存消失,還要使用那個(gè)變量。為了讓數(shù)據(jù)還能繼續(xù)被使用,就用final修飾,這樣,在堆內(nèi)存里面存儲(chǔ)的其實(shí)是一個(gè)常量值。
(4)匿名內(nèi)部類(lèi):
    【1】就是內(nèi)部類(lèi)的簡(jiǎn)化寫(xiě)法
    【2】格式:new 類(lèi)名或接口名(){}
    【3】前提:存在一個(gè)類(lèi)或者接口,這里的類(lèi)可以是具體的普通的類(lèi),也可以是抽象類(lèi)
    【4】本質(zhì):是一個(gè)繼承了類(lèi)或者實(shí)現(xiàn)了接口的子類(lèi)匿名對(duì)象
    【5】可以說(shuō),匿名內(nèi)部類(lèi)其實(shí)就是一個(gè)子類(lèi)匿名對(duì)象

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/76928.html

相關(guān)文章

  • 北上廣深杭房?jī)r(jià)高壓下,這也許是程序員扎根的唯一出路...

    摘要:在不考慮通脹和工資增長(zhǎng)的情況下,除去吃喝需要攢年才能攢出一線城市房子的首付,以這樣的收入水平,基本上沒(méi)法扎根。 簡(jiǎn)單算一筆賬,目前小公司Java后端工資一般是1萬(wàn)出頭,年薪普遍在20萬(wàn)以下。在不考慮通脹和工資增長(zhǎng)的情況下,除去吃喝需要攢30年才能攢出一線城市房子的首付,以這樣的收入水平,基本...

    Pink 評(píng)論0 收藏0
  • everything is object

    摘要:寄存器本書(shū)沒(méi)有做很多說(shuō)明,不做解釋棧,這個(gè)區(qū)域在的區(qū)域里面。有一個(gè)這個(gè)指針的上移來(lái)刪除釋放內(nèi)存,下移來(lái)存儲(chǔ)。重點(diǎn)就是這里面常常用來(lái)存儲(chǔ)對(duì)象。常量存儲(chǔ),這個(gè)區(qū)域在的區(qū)域。本章的聯(lián)系很明顯。 引言 從這一章的標(biāo)題我們就可以很容易知道這章主要講的還是作為Java語(yǔ)言最大的一個(gè)特性(面向?qū)ο螅?。這個(gè)跟自己開(kāi)始學(xué)習(xí)Java不同,一開(kāi)始學(xué)習(xí)一門(mén)語(yǔ)言都是直接從語(yǔ)法開(kāi)始,但是這本書(shū)是從Java的思想開(kāi)...

    Gilbertat 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<