最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Java面向?qū)ο笠曨l教程全集-璇女神主講【課工場】

2021-08-31 09:37 作者:我不會java和pr  | 我要投稿



循環(huán)(do while )



?
2.6 方法傳參-對象數(shù)組 P17 - 12:02
?


這里的空指針異常是因?yàn)槲覄?chuàng)建了一個新的數(shù)組,也規(guī)定了這個數(shù)組的長度,但是數(shù)組里面的每個下標(biāo)我都沒有放進(jìn)去對象,然后就對著空對象進(jìn)行直接的屬性改變/雖然系統(tǒng)不報錯,但是運(yùn)行的時候就會有錯誤,以后遇到這種情況必須要先給數(shù)組創(chuàng)建對象




方法的命名要遵循駝峰命名規(guī)則(首個單詞小寫,之后每個單詞的首字母都大寫)


?
2.7 構(gòu)造方法 P18 - 07:15
?

構(gòu)造方法沒有返回值。構(gòu)造方法名字和類名一樣

構(gòu)造方法類似與給創(chuàng)建的元素進(jìn)行初始化。


系統(tǒng)默認(rèn)提供無參(所以我們創(chuàng)建對象的時候可以直接調(diào)用無參的構(gòu)造方法)

但是如果我們自定義了有參的構(gòu)造方法,系統(tǒng)就不在再默認(rèn)提供無參構(gòu)造方法!

Student stu = new Student();

這里 就是調(diào)用了無參構(gòu)造方法


創(chuàng)建帶參的構(gòu)造方法就是給元素的進(jìn)行初始化

public class Student{

String name;

int age;

}

public class Student(String name,int age){

this.name = name;

this.age = age; / / 這里就引申出了this的用法

}


this是對一個對象的默認(rèn)引用

可以調(diào)用本類的屬性 this.age=age;

可以調(diào)用本類的普通方法 this.add();

可以調(diào)用本類的構(gòu)造方法 this(name);

(this調(diào)用本類的構(gòu)造方法,必須是寫在第一行)


public class Student(String name,int age){

this.name = name;

this.age = age;

}

//調(diào)用本類構(gòu)造方法

public class Student(String name,int age, int score){

this.(name.this ); //語法注意:使用this必須是構(gòu)造方法的第一個語句

//調(diào)用構(gòu)造方法Student(String name,int age)

this.score=score;

}


?
2.8 方法重載 P19 - 04:25
?

方法重載(同名不同參)

同一個類中,方法名相同,參數(shù)個數(shù)或者類型不同,與返回值和訪問修飾符無關(guān)


?
2.9 成員變量和局部變量 P20 - 00:33
?

成員變量和局部變量

作用域不同:

屬性:成員變量(全局變量)

局部變量:作用域是一個方法或者一個語句塊


初始值不同:

JAVA會給成員變量一個初始值

java不會給局部變量一個初始值,局部變量必須初始化賦值以后使用

(同一個類中,成員變量和局部變量同名時,局部變量具有更高的優(yōu)先級)


帶參方法如何定義和使用?

基本數(shù)據(jù)類型和引用數(shù)據(jù)類型在參數(shù)傳遞時的區(qū)別是什么?

構(gòu)造方法有何作用?如何定義?

方法重載有何特點(diǎn)?

成員變量和局部變量的區(qū)別?



封裝與繼承


何為封裝:把類的某些信息隱藏起來,不允許外部程序直接訪問,而是通過該類提供的方法來實(shí)現(xiàn)對隱藏信息的操作和訪問。屬性私有,方法公開。

兩大原則:1.把所有屬性藏起來

2.把盡可能多的東西藏起來,對外提供便捷的接口。


如何實(shí)現(xiàn)封裝:

1.修改屬性的可見性:設(shè)為private,防止錯誤的修改

2.創(chuàng)建共有的getter/setter方法(getter是屬性的讀取/setter是屬性的賦值和操作)

3.在getter/setter加入屬性控制語句


封裝的好處:

1.便于使用者正確使用系統(tǒng),防止程序修改屬性

2.有助于系統(tǒng)之間的松耦合,提高系統(tǒng)獨(dú)立性

3.提高軟件的可重用性

4.降低了構(gòu)建大型項(xiàng)目的風(fēng)險


?
3.5 包 P26 - 24:52
?

1.包名由小寫字母組成,不能以圓點(diǎn)開頭或結(jié)尾

2.包名之前最好加上唯一的前綴,通常使用組織倒置的網(wǎng)絡(luò)

3.包名后續(xù)部分依不同機(jī)構(gòu)內(nèi)部規(guī)范而不同


書寫規(guī)范:

package只能有一句(必須放在第一句)

import可以有多句

緊接著是類的聲明

?
3.6 訪問權(quán)限控制 P27 - 03:36
?

訪問權(quán)限控制修飾符:


同包的測試類及可以訪問public修飾的類,也可以訪問默認(rèn)修飾符修飾的類

不同包的測試類及只可以訪問public修飾的類,不可以訪問默認(rèn)修飾符修飾的類


public:公有訪問級別

默認(rèn)修飾符:包級私有訪問級別

類的訪問修飾符有兩種

類成員的訪問修飾符由四種

作用域??當(dāng)前類 同一package 子孫類????其他

public? ?√?? ?? ?√????? √??? √?

protected ?√ ?? ?√???? √?? ×?

friendly默認(rèn) √? ?? ?√???? ? ×??? ×?

private?? √?? ?? ?×???? ×?? ×?


static修飾符可以修飾:

*成員變量

靜態(tài)變量,可以直接通過類名訪問

*成員方法

靜態(tài)方法,可以直接通過類名訪問

*代碼塊

靜態(tài)代碼塊,當(dāng)Java虛擬機(jī)加載類時,就會執(zhí)行該代碼塊(只調(diào)用一次)


繼承

類圖中的三角符號代表繼承



子類和父類滿足 is-a 的關(guān)系才能使用繼承.繼承是實(shí)現(xiàn)代碼重用的重要手段之一,java中只支持單根繼承


子類無法繼承父類的private成員

同包的子類父類默認(rèn)修飾符可以訪問,不同包則不可以

子類可以繼承父類的protected成員,不管是不是同包


子類繼承了包的public,protected修飾的屬性和方法(不管是否同包)。繼承了默認(rèn)訪問修飾符修飾的屬性和方法(必須同包)。


編寫父類:

【訪問修飾符】class Pet{

//公共的屬性和方法

}


編寫子類:

【訪問修飾符】class Dog extends Pet{

//子類特有的屬性和方法

}


實(shí)現(xiàn)封裝的步驟是什么?

如何床架和引用包?

常用的訪問權(quán)限控制符有哪些?

static在java中的應(yīng)用場景以及使用注意事項(xiàng)是什么?

繼承有何好處?

如何實(shí)現(xiàn)繼承?

子類能(不能)繼承父類的什么?


方法重寫和多態(tài)

父類:提供共性方法


方法的重寫或者方法的覆蓋 (overriding)

子類根據(jù)需求對父類繼承的方法進(jìn)行重新編寫

重寫是,可以用super.的方式來保留父類的方法

構(gòu)造方法不可以被重寫


super介紹(super訪問父類成員)

訪問父類方法 super.print();

訪問父類屬性 super.name;

訪問父類構(gòu)造方法 super(); super(name,health,love);



使用super關(guān)鍵句字,super代表父類對象

super只能出現(xiàn)在子類的方法和構(gòu)造方法中

super使用構(gòu)造方法時,只能放在第一句

super不可以調(diào)用父類的private屬性

調(diào)用父類的父類就用super就好


super使用場景:

子類調(diào)用父類方法

可以使用super調(diào)用子類覆蓋掉的父類的同名成員



繼承條件下構(gòu)造方法的調(diào)用規(guī)則:

*子類構(gòu)造方法沒有通過super顯式調(diào)用父類的有參構(gòu)造方法,也沒有通過this顯式調(diào)用自身的其他構(gòu)造方法:系統(tǒng)默認(rèn)調(diào)用父類的無參構(gòu)造方法

*子類構(gòu)造方法通過super顯式調(diào)用父類的有參構(gòu)造方法:執(zhí)行父類相應(yīng)的構(gòu)造方法,而不執(zhí)行父類的無參構(gòu)造方法

*子類構(gòu)造方法通過this顯式調(diào)用自身的其他構(gòu)造方法,在相應(yīng)構(gòu)造方法中應(yīng)用以上兩條規(guī)則


方法重寫規(guī)則:

*方法名相同

*參數(shù)類型相同

*返回值類型相同或者是其子類

*訪問權(quán)限不可以嚴(yán)于父類

*父類的靜態(tài)方法不能被子類覆蓋為非靜態(tài)方法,谷類的非靜態(tài)方法不能被子類覆蓋為靜態(tài)方法

*子類可以定義與父類同名的靜態(tài)方法,以便在子類中隱藏父類的靜態(tài)方法(靜態(tài)方法無法使用super)

*不能拋出比父類方法更多的異常


靜態(tài)方法可以直接通過類名去調(diào)用。



方法重載是同一類中同名不同參

方法重寫是父子類中同名同參


Object類

是所有類的直接或者間接父類


Object類的equals()方法

比較兩個對象是否為同一個對象,是則返回true

操作符:==

簡單數(shù)據(jù)類型,直接比較值:如1==2

在Object類的equals方法與==沒有區(qū)別

比較兩者(引用類型)是否為同一對象:==或equals都可以判斷


重寫Object類的方法

重寫equals方法原因是:當(dāng)有特殊需求的時候,比如在實(shí)際生活應(yīng)用當(dāng)中,認(rèn)為屬性相同就是同一對象時,就需要重寫equals方法


重寫方法的快捷操作:Alt+Shift+s調(diào)出界面


可以重寫的父類方法

instanceof運(yùn)算符:用來判斷某個對象是否為某種類型--- 對象名?instanceof 類型名

這里的student s = (student)obj;強(qiáng)制轉(zhuǎn)換是因?yàn)槿绻粡?qiáng)制轉(zhuǎn)換點(diǎn)不出來.num 和 .name




instanceof 用于判斷一個引用類型所引用的對象是否是一個類的實(shí)例

java.lang.String 重寫了equals()方法,把equals()方法的判斷變成了判斷其值。也重寫了toString()方法


//重寫toString():對象信息不要反悔類似內(nèi)存地址的信息,而是返回學(xué)生姓名給我。

@Override

public String toString() {

return this.name;

}


多態(tài)(動態(tài)綁定)

為什么使用多態(tài)?

掌握什么是多態(tài)?

多態(tài):同一個引用類型,使用不同的實(shí)例而執(zhí)行不同的操作。

父類類型指向子類對象:

Pet dog = new Dog();

繼承和方法重寫是實(shí)現(xiàn)多態(tài)的基礎(chǔ)

多態(tài):同一個引用類型,使用不同的實(shí)例而執(zhí)行不同的操作

繼承和方法重寫是實(shí)現(xiàn)多態(tài)的基礎(chǔ)

應(yīng)用:父類引用指向子類對象


抽象類和抽象方法


抽象類不能被實(shí)例化,實(shí)例化沒有任何實(shí)際意義。不可以直接new抽象類,但是可以new子類

例如不可以:Pet p = new Pet();

但是可以: Pet p = new Dog();


有抽象方法的類一定是抽象類

抽象類中不一定要有抽象方法

一個抽象類里面的抽象方法必須被子類實(shí)現(xiàn),除非子類也是抽象類。


向上轉(zhuǎn)型和向下轉(zhuǎn)型

如何實(shí)現(xiàn)向上轉(zhuǎn)型

如何實(shí)現(xiàn)向下轉(zhuǎn)型

熟練掌握instanceof的使用


向上轉(zhuǎn)型:父類的引用指向子類對象,自動進(jìn)行類型轉(zhuǎn)換

<父類型> <引用變量名> = new <子類型>();

Pet pet = new Dog();

此時通過父類引用變量調(diào)用的方法是子類覆蓋或繼承父類的方法,不是父類的方法。

此時通過父類引用變量無法調(diào)用那個子類特有的方法。



使用向上轉(zhuǎn)型以后無法調(diào)用子類的獨(dú)有方法時,可使用向下轉(zhuǎn)型

向下轉(zhuǎn)型:如果沒有轉(zhuǎn)換為真實(shí)的子類類型,此時會引發(fā)ClassCastException

?
4.13 向上(向下)轉(zhuǎn)型 P46 - 13:40
?

java提供了instanceof運(yùn)算符來進(jìn)行類型的判斷,可以避免向下轉(zhuǎn)型時的異常



?
4.13 向上(向下)轉(zhuǎn)型 P46 - 17:45
?



多態(tài)的兩種使用方式:

*使用父類作為方法的形參:是java中實(shí)現(xiàn)和使用多態(tài)的主要方式

*使用父類作為方法的返回值,也是java實(shí)現(xiàn)和使用多態(tài)的主要方式



?
4.14 多態(tài)的兩種使用方式 P47 - 01:15
?

多態(tài):根據(jù)具體的動物子類,調(diào)用其重寫后的shout。







方法重寫的規(guī)則是什么?

super的作用是什么?

繼承下構(gòu)造方法是如何執(zhí)行的?

Object類有奶爸寫方法常被子類重寫?

如何實(shí)現(xiàn)多態(tài)?

多態(tài)有哪兩種常用的應(yīng)用方式?


抽象類和接口:


抽象類和普通類的區(qū)別:

抽象類不可以被實(shí)例化。但是可以創(chuàng)建 一個引用變量,其類型是一個抽象類,指向非抽象的子類實(shí)例

抽象類里可以有非抽象的構(gòu)造方法,創(chuàng)建子類時

?
6.2 抽象類 P62 - 18:19
?

構(gòu)造方法就是創(chuàng)建對象以后進(jìn)行初始化

子類創(chuàng)建對象時,先調(diào)用父類的構(gòu)造方法,在調(diào)用子類的構(gòu)造方法





抽象方法vs普通方法

*有無方法體



接口

概念性的接口:指系統(tǒng)對外提供的所有服務(wù)

interface定義的實(shí)實(shí)在在的接口

[訪問修飾符] interface 接口名稱 [extends 其他的接口名]{

//聲明變量

//聲明方法

}

接口不可以有構(gòu)造方法。抽象類雖然不可以實(shí)例化,但是可以有構(gòu)造方法,因?yàn)闃?gòu)造方法可以讓子類實(shí)現(xiàn)父類構(gòu)造方法的復(fù)用。


接口可以被當(dāng)作類型使用:


實(shí)現(xiàn)類必須實(shí)現(xiàn)接口中的全部抽象方法,除非實(shí)現(xiàn)類也是一個抽象類。如果子類中有方法(接口中的抽象方法)沒有實(shí)現(xiàn),那么這個方法在子類中也定義為抽象類,子類變成抽象類。



雖然接口不是父類。但這種寫法也是對的:父類引用指向子類對象



方法的分類:普通方法 抽象方法(abstract) 靜態(tài)方法(static) 默認(rèn)方法(default)

默認(rèn)方法可以被繼承,通過實(shí)例調(diào)用






先繼承再實(shí)現(xiàn)

為什么jdk8以后新增接口特性??

?
6.5 JDK8新增接口特性 P65 - 21:57
?





is a 使用繼承關(guān)系

has a 使用接口

抽象類和接口 異同:

*相同點(diǎn):

代表系統(tǒng)的抽象層

都不能被實(shí)例化

都能包含抽象方法(用于描述系統(tǒng)提供的服務(wù),不必提供具體實(shí)現(xiàn))

*不同點(diǎn):

在抽象類中可以為部分普通方法提供默認(rèn)實(shí)現(xiàn)。JDK8之前接口中只能包含抽象方法,JDK8之后接口就可以包含默認(rèn)方法了

一個類只能繼承一個直接的父類,但可以實(shí)現(xiàn)多個接口


使用原則:

接口的好處:

提高了程序的可維護(hù)性和可拓展性

提高了程序的規(guī)范性

提高了程序的安全性

接口代表著一種 能力 約定 標(biāo)準(zhǔn)

?
6.12 面向接口編程4 P72 - 02:26
?




何時聲明全局靜態(tài)常量:公用的,含義確定的,值也不變的


?
6.13 抽象類和接口總結(jié) P73 - 11:04
?


面向?qū)ο笤O(shè)計原則:

多用接口,少用繼承()

針對接口編程

針對拓展開放,針對改變關(guān)閉

Java面向?qū)ο笠曨l教程全集-璇女神主講【課工場】的評論 (共 條)

分享到微博請遵守國家法律
象州县| 简阳市| 深水埗区| 广灵县| 宝鸡市| 绥滨县| 建昌县| 昌吉市| 汽车| 苏州市| 佛山市| 乌兰浩特市| 梁山县| 呼图壁县| 馆陶县| 兴文县| 田东县| 麻栗坡县| 从化市| 泰顺县| 安吉县| 巢湖市| 南丰县| 东乌| 邛崃市| 冷水江市| 开鲁县| 区。| 东台市| 平远县| 土默特右旗| 香港 | 曲周县| 达州市| 杭州市| 友谊县| 诸暨市| 马公市| 堆龙德庆县| 铜陵市| 乌兰浩特市|