国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

java學習(三) —— 面對對象

褰辯話 / 946人閱讀

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

前言

java是面對對象的語言,因此有必要多帶帶紀錄下對象的各種定義和理解。

面對對象,主要包括:面向對象思想,類與對象及其使用,對象的內存圖,成員變量和局部變量的區(qū)別,匿名對象,封裝(private),this關鍵字,構造方法,static關鍵字。

面對對象基本概述

概述:是基于面向過程的變成思想,是對面向過程的一種封裝。

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

面對對象設計:其實就是在管理和維護對象之間的關系。

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

類與對象的關系:

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

匿名對象:

(1)就是沒有名字的對象,是對象的一種簡化表示形式
(2)匿名對象的兩種使用情況:1、對象調用方法僅僅一次的時候 2、作為實際參數(shù)傳遞

類的相關概述:

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

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

類 基本包括:繼承、多態(tài)、抽象類、接口、包和導包、權限修飾符、內部類

類的繼承

概述:多個類中存在相同屬性和行為時,將這些內容抽取到多帶帶一個類中,那么多個類無需再定義這些屬性和行為,只要繼承這個類即可。

通過extends這個關鍵字可以實現(xiàn)類與類到繼承

多帶帶的這個類稱為父類或者基類、超類,這多個類可以稱為子類或者派生類

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

好處:

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

注意事項:

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

繼承中構造方法的關系:

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

方法重寫:

(1)概述:子類中出現(xiàn)了一個和父類一摸一樣的方法聲明,也被稱為方法覆蓋,方法復寫
(2)父類中的私有方法不能被重寫
(3)子類重寫父類方法時,訪問權限不能更低
(4)父類靜態(tài)方法,子類也必須通過靜態(tài)方法進行重寫

幾個關鍵字:static、super、final

static關鍵字:

(1)可以修飾成員變量和成員方法
(2)特點:
     【1】隨著類的加載而加載
     【2】優(yōu)先于對象存在
     【3】被類的所有對象共享
     【4】可以通過類名調用
(3)注意事項:
     【1】在靜態(tài)方法中是沒有this關鍵字的
     【2】靜態(tài)方法只能訪問靜態(tài)的成員變量和靜態(tài)的成員方法
(4)靜態(tài)變量和成員變量的區(qū)別:
     【1】靜態(tài)變量屬于類,所以也成為類變量;成員變量屬于對象,所以也稱為實例變量
     【2】靜態(tài)變量存儲在方法區(qū)的靜態(tài)區(qū),成員變量存儲在堆內存中
     【3】靜態(tài)變量隨著類的加載而加載,隨著類的消失而消失;成員變量隨著對象的創(chuàng)建而存在,隨著對象的消失而消失
     【4】靜態(tài)變量可以通過類名調用,也可以通過對象調用;成員變量只能通過對象名調用

super關鍵字:

(1)super和this關鍵字的用法很像,this代表本類對應的引用,super代表父類存儲空間的標識(可以理解為父類的引用)
(2)使用super來引用父類的成分,用this來引用當前對象

final關鍵字:

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

多態(tài)

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

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

好處:

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

弊端:不能訪問子類特有功能

抽象類

概述:一個沒有方法體的方法應該定義為抽象方法,而類中如果有抽象方法,該類必須定義為抽象類

特點:

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

抽象類成員特點:

(1)成員變量可以是變量,也可以是常量
(2)有構造方法,但是不能實例化。那么構造方法的作用是什么?用戶子類訪問父類數(shù)據(jù)的初始化
(3)可以有抽象方法,限定子類必須完成某些動作
(4)也可以有非抽象方法,提高代碼復用性
(5)抽象方法必須為public或protected(因為如果是private,則不能被子類繼承,子類便無法實現(xiàn)該方法),缺省情況下默認為public

接口

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

接口特點:

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

接口成員特點:

(1)成員變量:只能是常量,默認修飾符是public、static、final
(2)沒有構造方法,因為接口主要是擴展功能的,而沒有具體存在
(3)接口的成員方法只能是抽象方法,默認修飾符是public、abstract

類與類、類與接口、接口與接口關系

類與類:繼承關系,只能單繼承,但是可以多層繼承

類與接口:實現(xiàn)關系,可以單實現(xiàn),也可以多實現(xiàn)。還可以在繼承一個類多同時實現(xiàn)多個接口

接口與接口:繼承關系,可以單繼承,也可以多繼承

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

接口是對動作的抽象,抽象類是對根源的抽象

抽象類表示的是這個對象是什么,而接口表示的是這個對象能做什么

抽象類與接口都不能被實例化,如果要實例化,抽象類變量必須指向實現(xiàn)所有抽象方法的子類對象,接口變量必須指向實現(xiàn)所有接口方法的類對象

抽象類要被子類繼承,接口要被類實現(xiàn)

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

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

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

抽象方法只能聲明,不能實現(xiàn)。接口是設計的結果,抽象類是重構的結果

接口可以繼承接口,并可繼承多接口,但是類只能單繼承

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

當你關注一個事物的本質的時候,用抽象類;當你關注一個操作的時候用接口。

包:package

概述:其實就是文件夾,對類進行分類管理

定義:package 包名

注意事項:

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

帶包的類的編譯和運行:

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

導包:

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

內部類

概述:把類定義在其他類的內部,這個類就被成為內部類

訪問特點:

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

內部類位置:

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

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

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/76928.html

相關文章

  • 北上廣深杭房價高壓下,這也許是程序員扎根的唯一出路...

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

    Pink 評論0 收藏0
  • everything is object

    摘要:寄存器本書沒有做很多說明,不做解釋棧,這個區(qū)域在的區(qū)域里面。有一個這個指針的上移來刪除釋放內存,下移來存儲。重點就是這里面常常用來存儲對象。常量存儲,這個區(qū)域在的區(qū)域。本章的聯(lián)系很明顯。 引言 從這一章的標題我們就可以很容易知道這章主要講的還是作為Java語言最大的一個特性(面向對象)。這個跟自己開始學習Java不同,一開始學習一門語言都是直接從語法開始,但是這本書是從Java的思想開...

    Gilbertat 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<