国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java簡明總結(二)

2019-11-06 08:03:55
字體:
來源:轉載
供稿:網友

java面向對象面向對象基礎 類對象實例1 成員屬性2 成員方法構造方法構造代碼塊一般方法面向對象三大特征 封裝繼承多態1 封 裝2 繼 承3 多 態4 關鍵字 this-super-static-final抽象類和接口1 抽象類 abstract2 接 口包和常見的軟件包1 包定義包用package關鍵字2 常見的軟件包

Java面向對象

1 面向對象基礎: 類,對象,實例

//類class Student(){ //成員變量 String name; //成員方法 public void showName(){ System.out.在類中的定義都稱之為成員。成員有兩種: 1.成員屬性:對應的就是事物的屬性,用變量描述。 2.成員方法:對應的就是事物的行為,用函數描述。

1.1 成員屬性

成員屬性局部變量的區別:

成員屬性 直接定義在類中。 局部變量 定義在方法中,參數上,語句中。成員屬性 在這個類中有效。 局部變量 只在自己所屬的大括號內有效,大括號結束,局部變量失去作用域。成員屬性 存在于堆內存中,隨著對象的產生而存在,消失而消失。 局部變量 存在于棧內存中,隨著所屬區域的運行而存在,結束而釋放。

1.2 成員方法=構造方法(構造代碼塊)+一般方法

1.2.1 構造方法

定義: 用于給對象進行初始化,是給與之對應的對象進行初始化。

特點: 1、該方法的名稱和所在類的名稱相同。 2、不需要定義返回值類型。 3、該方法沒有具體的返回值。

記住: 所有對象創建時,都需要初始化才可以使用。

類中沒有構造方法: 一個類在定義時,如果沒有定義過構造方法,那么該類中會自動生成一個空參數的構造方法,為了方便該類創建對象,完成初始化。如果在類中自定義了構造方法,那么默認的構造方法就沒有了。

類中多個構造方法 一個類中,可以有多個構造方法,因為它們的方法名稱都相同,所以只能通過參數列表來區分。所以,一個類中如果出現多個構造方法。它們的存在是以重載體現的。

1.2.2 構造方法和一般方法的區別

定義格式不同調用方式不同 : 構造方法是在對象創建時,就被調用,用于初始化。 一般方法是對象創建后,需要調用才執行。執行次數不同: 構造方法的初始化動作只執行一次。 一般方法可以被調用很多次。

2 面向對象三大特征: 封裝,繼承,多態

2.1 封 裝

封裝的定義 : 是指隱藏對象的屬性和實現細節,僅對外提供公共訪問方式。封裝的好處: 將變化隔離;便于使用;提高重用性,安全性。封裝的原則: 將不需要對外提供的內容都隱藏起來,提供公共方法對其訪問。封裝的體現私有僅僅是封裝的一種體現形式而已。 屬性是用于存儲數據的,直接被訪問,容易出現安全隱患。 所以,類中的屬性通常被私有化,并對外提供公共的訪問方法。 對于私有屬性的訪問方位一般有兩個:setter(),getter()

匿名對象

使用場景: 1、當對方法只進行一次調用的時候,可以使用匿名對象。 2、當對象對成員進行多次調用時,不能使用匿名對象。必須給對象起名字。


2.2 繼 承

繼承體現了復用性原則。 繼承的弊端是打破了封裝性。 單繼承:一個類只能有一個父類。Java只支持單繼承。 多繼承:一個類可以有多個父類。Java不直接支持類的多繼承。

為什么不支持多繼承?

因為當一個類同時繼承兩個父類時,兩個父類中有相同的功能,那么子類對象調用該功能時,運行哪一個呢?但是Java支持多重繼承。A繼承B B繼承C C繼承D。

繼承情況中,成員的特點:

成員屬性 父類和子類中出現同名變量,子類調用,值是子類的父類和子類中一般不會出現同名變量,因為父類中有,子類中繼承即可。成員方法 父類和子類中出現了一模一樣的方法時,建立子類對象會運行子類中的方法。這叫做重寫(覆蓋,覆寫)。重寫體現了擴展性原則。子類覆蓋父類時,必須要保證,子類方法的權限必須大于等于父類方法權限可以實現繼承。否則,編譯失敗。覆蓋時,要么都靜態,要么都不靜態。 靜態只能覆蓋靜態,或者被靜態覆蓋。

構造方法

發現子類構造方法運行時,先運行了父類的構造方法。 原因:子類的所有構造方法中的第一行,其實都有一條隱身的語句super();super(): 表示父類的構造方法,并會調用于參數相對應的父類中的構造方法。為什么子類對象初始化時,都需要調用父類中的方法?

因為子類繼承父類,會繼承到父類中的數據,所以必須要看父類是如何對自己的數據進行初始化的。所以子類在進行對象初始化時,先調用父類的構造方法,這就是子類的實例化過程。

注意事項:

子類中所有的構造方法都會默認訪問父類中的空參數的構造方法,因為每一個子類構造內第一行都有默認的語句super(); 如果父類中沒有空參數的構造方法,那么子類的構造方法內,必須通過super語句指定要訪問的父類中的構造方法。如果子類構造方法中用this來指定調用子類自己的構造方法,那么被調用的構造方法也一樣會訪問父類中的構造方法。

2.3 多 態

多態定義 父類引用或者接口的引用指向了自己的子類對象。Animal a = new Cat();可以調用子類中重寫的方法。

多態的前提

必須要有關系,比如繼承、或者實現。通常會有覆蓋操作。

多態的好處:提高了程序的擴展性

多態的弊端: 當父類引用指向子類對象時,雖然提高了擴展性,但是只能訪問父類中具備的方法,不可以訪問子類中特有的方法。(前期不能使用后期產生的功能,即訪問的局限性)如果想用子類對象的特有方法,如何判斷對象是哪個具體的子類類型呢? 可以通過一個關鍵字 instanceof ,用來判斷對象是否實現了指定的接口或繼承了指定的類。格式:<對象 instanceof 類型> ,判斷一個對象是否所屬于指定的類型。Student instanceof Person = true;//student繼承了person類多態的代碼class A1{ void teaching(){ System.out.println("教課"); } void fishing(){ System.out.println("釣魚"); }}class A11 extends A1{ void teaching(){ System.out.println("JAVA"); } void watching(){ System.out.println("看電影"); }}class { public static void main(String[] args) { A1 x = new A11();//向上轉型 子-->父 x.teaching(); x.watching(); //錯誤,不能訪問的。 A11 y = (A11)x; //向下轉型 父-->子 y.watching(); //在多態中,自始自終都是子類對象在做著類型的變化。 }}

封裝:隱藏實現細節,讓代碼模塊化。體現復用性(模塊化)原則。 繼承:擴展已經存在的代碼模塊(類)。體現擴展性原則。 多態:在繼承的基礎上,讓子類功能能被父類引用變量調用(向后兼容)。進一步體現擴展性(降低耦合性)原則。


2.4 關鍵字: this-super-static-final

this關鍵字 this代表本類對象。 this可以調用成員。包括成員屬性和成員方法(一般方法和構造方法)。

public class Student{ String name; //構造方法一 public Student(){ //注意:用this調用構造方法,必須定義在構造方法的第一行。 this("張三") } //構造方法二 public Student(String name){ this.name=name; }}

super關鍵字

this:代表是本類類型的對象引用。 super:代表是子類所屬的父類中的內存空間引用。

super()和this()是否可以同時出現的構造方法中? 兩個語句只能有一個定義在第一行,所以只能出現其中一個。

super()或者this():為什么一定要定義在第一行? 因為super()或者this()都是調用構造方法,構造方法用于初始化,所以初始化的動作要先完成。

static關鍵字 static是一個修飾符。 用于修飾成員。包括成員屬性和成員方法。 體現了復用性原則。

特點

想要實現對象中的共性數據共享。可以將這個數據進行靜態修飾。被靜態修飾的成員,可以直接被類名所調用。也就是說,靜態的成員多了一種調用方式。類名.靜態成員。靜態隨著類的加載而加載。而且優先于對象存在。

注意

有些數據是對象特有的數據,是不可以被靜態修飾的。靜態方法只能訪問靜態成員,不可以訪問非靜態成員。 因為靜態方法加載時,優先于對象存在,所以沒有辦法訪問對象中的成員。靜態方法中不能使用this,super關鍵字。 因為this代表對象,而在靜態時,有可能沒有對象,所以this無法使用。主方法是靜態的。

成員屬性和靜態變量的區別:

成員屬性所屬于對象。所以也稱為實例變量。 靜態變量所屬于類。所以也稱為類變量。成員屬性存在于堆內存中。 靜態變量存在于方法區中。成員屬性隨著對象創建而存在。隨著對象被回收而消失。 靜態變量隨著類的加載而存在。隨著類的消失而消失。成員屬性只能被對象所調用 。 靜態變量可以被對象調用,也可以被類名調用。成員屬性可以稱為對象的特有數據,靜態變量稱為對象的共享數據

final關鍵字 final是一個修飾符,可以修飾類,方法,變量。

被final修飾的類是一個最終類,不可以被繼承。被final修飾的方法是一個最終方法,不可以被覆蓋。被final修飾的變量是一個常量,只能賦值一次。不加final修飾不是也可以使用嗎?那么這個值是一個變量,是可以更改的。加了final,程序更為嚴謹。常量名稱定義時,有規范,所有字母都大寫,如果由多個單詞組成,中間用 _ 連接。

3 抽象類和接口

3.1 抽象類: abstract

抽象類的特點:

抽象方法只能定義在抽象類中,抽象類和抽象方法必須由abstract關鍵字修飾(可以描述類和方法,不可以描述變量)。抽象方法只定義方法聲明,并不定義方法實現。抽象類不可以被創建對象(實例化)。只有通過子類繼承抽象類并覆蓋了抽象類中的所有抽象方法后,該子類才可以實例化。否則,該子類還是一個抽象類。

抽象類的細節:

抽象類和一般類沒有太大的區別,都是在描述事物。 抽象類中可以有構造方法。抽象類中可以有一般方法。抽象關鍵字abstract和哪些不可以共存?final , private , static 抽象類中可以不定義抽象方法。 抽象方法目的僅僅為了不讓該類創建對象。

3.2 接 口

接口的定義 1. 是用關鍵字interface定義的。 2. 接口中包含的成員,最常見的有全局常量、抽象方法。 注意:接口中的成員都有固定的修飾符。 成員屬性:public static final 成員方法:public abstract

interface Inter{ public static final int x = 3; public abstract void show();}

接口的特點 1. 接口中有抽象方法,說明接口不可以實例化。接口的子類必須實現了接口中所有的抽象方法后,該子類才可以實例化。否則,該子類還是一個抽象類。 2. 類與類之間存在著繼承關系,類與接口中間存在的是實現關系。即繼承用extends ;實現用implements ; 3. 接口和類不一樣的地方是接口可以被多實現,這就是多繼承改良后的結果。java將多繼承機制通過多實現來體現。 4. 一個類在繼承另一個類的同時,還可以實現多個接口。所以接口的出現避免了單繼承的局限性。還可以將類進行功能的擴展。 5. 其實java中是有多繼承的。接口與接口之間存在著繼承關系,接口可以多繼承接口。 6. 接口都用于設計上,設計上的特點:(可以理解主板上提供的接口)

接口是對外提供的規則。接口是功能的擴展。接口的出現降低了耦合性。

抽象類與接口

抽象類:一般用于描述一個體系單元,將一組共性內容進行抽取。特點:可以在類中定義抽象內容讓子類實現,可以定義非抽象內容讓子類直接使用。它里面定義的都是一些體系中的基本內容。接口:一般用于定義對象的擴展功能,是在繼承之外還需這個對象具備的一些功能。抽象類和接口的共性:都是不斷向上抽取的結果。抽象類和接口的區別: 抽象類只能被繼承,而且只能單繼承。接口需要被實現,而且可以多實現。 抽象類中可以定義非抽象方法,子類可以直接繼承使用。接口中都是抽象方法,需要子類去實現。抽象類的成員修飾符可以自定義。接口中的成員修飾符是固定的。全都是public的。

4. 包和常見的軟件包

4.1 包:定義包用package關鍵字。

給類文件提供多層名稱空間。 如果生成的包不在當前目錄下,需要最好執行classpath,將包所在父目錄定義到classpath變量中即可。類的全名稱是:包名.類名 編譯命令:javac –d 位置(.當前路徑) java源文件 (就可以自動生成包)包是一種封裝形式,用于封裝類,想要被包以外的程序訪問,該類必須為public;類中的成員,如果被包以外訪問,也必須public;包與包之間訪問可以使用的權限有兩種: public protected:只能是不同包中的子類可以使用的權限。

總結java中的四種權限:

范圍 public protected default private
同一個類中 ok ok ok ok
同一包中 ok ok ok
子類 ok ok
不同包中 ok

import - 導入:類名稱變長,寫起來很麻煩。為了簡化,使用了一個關鍵字:import,可以使用這個關鍵字導入指定包中的類。記住:實際開發時,到的哪個類就導入哪個類,不建議使用*. import packa.*: 這個僅僅是導入了packa當前目錄下的所有的類。不包含子包。 import packa.abc.*: 導入了packa包中的子包abc下的當前的所有類。如果導入的兩個包中存在著相同名稱的類。這時如果用到該類,必須在代碼中指定包名。


4.2 常見的軟件包:

java.lang : language java的核心包,Object System String Throwable jdk1.2版本后,該包中的類自動被導入。java.awt : 定義的都是用于java圖形界面開發的對象。javax.swing: 提供所有的windows桌面應用程序包括的控件,比如:Frame , Dialog, Table, List 等等,就是java的圖形界面庫。java.net : 用于java網絡編程方面的對象都在該包中。java.io : input,output 用于操作設備上數據的對象都在該包中。比如:讀取硬盤數據,往硬盤寫入數據。java.util : java的工具包,時間對象,集合框架。

java.applet :

application+let –>客戶端java小程序。server+let –> servlet 服務端java小程序。

jar :java的壓縮包,主要用于存儲類文件,或者配置文件等。

命令格式:jar –cf 包名.jar 包目錄解壓縮:jar –xvf 包名.jar 將jar包目錄列表重定向到一個文件中:jar –tf 包名.jar >c:/1.txt
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 沅江市| 安多县| 炎陵县| 晋江市| 香河县| 同仁县| 法库县| 稻城县| 志丹县| 赤水市| 岚皋县| 抚松县| 鹰潭市| 武邑县| 新巴尔虎右旗| 讷河市| 泸溪县| 宣威市| 瑞丽市| 务川| 应城市| 年辖:市辖区| 邵阳市| 东乡| 普定县| 尼玛县| 班戈县| 攀枝花市| 犍为县| 乌拉特前旗| 湖口县| 海原县| 柳河县| 宽城| 三都| 尚志市| 广德县| 绥阳县| 松潘县| 枞阳县| 临江市|