国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

「萬字圖文」Java繼承詳解

共 14226字,需瀏覽 29分鐘

 ·

2020-11-30 19:02


本文公眾號來源:bigsai

作者:bigsai

本文已收錄至我的GitHub


課程導(dǎo)學(xué)

在Java課堂中,所有老師不得不提到面向?qū)ο?/strong>(Object Oriented),而在談到面向?qū)ο蟮臅r(shí)候,又不得不提到面向?qū)ο蟮娜筇卣鳎悍庋b、繼承、多態(tài)。三大特征緊密聯(lián)系而又有區(qū)別,本課程就帶你學(xué)習(xí)Java的繼承

你可能不知道繼承到底有什么用,但你大概率曾有過這樣的經(jīng)歷:寫Java項(xiàng)目/作業(yè)時(shí)候創(chuàng)建很多相似的類,類中也有很多相同的方法,做了很多重復(fù)的工作量,感覺很臃腫。而合理使用繼承就能大大減少重復(fù)代碼,提高代碼復(fù)用性。


繼承的初相識

學(xué)習(xí)繼承,肯定是先從廣的概念了解繼承是什么以及其作用,然后才從細(xì)的方面學(xué)習(xí)繼承的具體實(shí)現(xiàn)細(xì)節(jié),本關(guān)就是帶你先快速了解和理解繼承的重要概念。

什么是繼承

繼承(英語:inheritance)是面向?qū)ο筌浖夹g(shù)中的一個(gè)概念。它使得復(fù)用以前的代碼非常容易,能夠大大縮短開發(fā)周期,降低開發(fā)費(fèi)用。

Java語言是非常典型的面向?qū)ο蟮恼Z言,在Java語言中繼承就是子類繼承父類的屬性和方法,使得子類對象(實(shí)例)具有父類的屬性和方法,或子類從父類繼承方法,使得子類具有父類相同的方法。父類有時(shí)也叫基類、超類;子類有時(shí)也被稱為派生類。

我們來舉個(gè)例子:我們知道動(dòng)物有很多種,是一個(gè)比較大的概念。在動(dòng)物的種類中,我們熟悉的有貓(Cat)、狗(Dog)等動(dòng)物,它們都有動(dòng)物的一般特征(比如能夠吃東西,能夠發(fā)出聲音),不過又在細(xì)節(jié)上有區(qū)別(不同動(dòng)物的吃的不同,叫聲不一樣)。在Java語言中實(shí)現(xiàn)Cat和Dog等類的時(shí)候,就需要繼承Animal這個(gè)類。繼承之后Cat、Dog等具體動(dòng)物類就是子類,Animal類就是父類。


為什么需要繼承

你可能會(huì)疑問為什么需要繼承?在具體實(shí)現(xiàn)的時(shí)候,我們創(chuàng)建Dog,Cat等類的時(shí)候?qū)崿F(xiàn)其具體的方法不就可以了嘛,實(shí)現(xiàn)這個(gè)繼承似乎使得這個(gè)類的結(jié)構(gòu)不那么清晰。

如果僅僅只有兩三個(gè)類,每個(gè)類的屬性和方法很有限的情況下確實(shí)沒必要實(shí)現(xiàn)繼承,但事情并非如此,事實(shí)上一個(gè)系統(tǒng)中往往有很多個(gè)類并且有著很多相似之處,比如貓和狗同屬動(dòng)物,或者學(xué)生和老師同屬人。各個(gè)類可能又有很多個(gè)相同的屬性和方法,這樣的話如果每個(gè)類都重新寫不僅代碼顯得很亂,代碼工作量也很大。

這時(shí)繼承的優(yōu)勢就出來了:可以直接使用父類的屬性和方法,自己也可以有自己新的屬性和方法滿足拓展,父類的方法如果自己有需求更改也可以重寫。這樣使用繼承不僅大大的減少了代碼量,也使得代碼結(jié)構(gòu)更加清晰可見。


所以這樣從代碼的層面上來看我們設(shè)計(jì)這個(gè)完整的Animal類是這樣的:

class?Animal
{
????public?int?id;
????public?String?name;
????public?int?age;
????public?int?weight;

????public?Animal(int?id,?String?name,?int?age,?int?weight)?{
????????this.id?=?id;
????????this.name?=?name;
????????this.age?=?age;
????????this.weight?=?weight;
????}
????//這里省略get?set方法
????public?void?sayHello()
????
{
????????System.out.println("hello");
????}
????public?void?eat()
????
{
????????System.out.println("I'm?eating");
????}
????public?void?sing()
????
{
????????System.out.println("sing");
????}
}

而Dog,Cat,Chicken類可以這樣設(shè)計(jì):

class?Dog?extends?Animal//繼承animal
{
????public?Dog(int?id,?String?name,?int?age,?int?weight)?{
????????super(id,?name,?age,?weight);//調(diào)用父類構(gòu)造方法
????}
}
class?Cat?extends?Animal{

????public?Cat(int?id,?String?name,?int?age,?int?weight)?{
????????super(id,?name,?age,?weight);//調(diào)用父類構(gòu)造方法
????}
}
class?Chicken?extends?Animal{

????public?Chicken(int?id,?String?name,?int?age,?int?weight)?{
????????super(id,?name,?age,?weight);//調(diào)用父類構(gòu)造方法
????}
????//雞下蛋
????public?void?layEggs()
????
{
????????System.out.println("我是老母雞下蛋啦,咯噠咯!咯噠咯!");
????}
}

各自的類繼承Animal后可以直接使用Animal類的屬性和方法而不需要重復(fù)編寫,各個(gè)類如果有自己的方法也可很容易地拓展。上述代碼中你需要注意extends就是用來實(shí)現(xiàn)繼承的。

繼承的分類

繼承分為單繼承和多繼承,Java語言只支持類的單繼承,但可以通過實(shí)現(xiàn)接口的方式達(dá)到多繼承的目的。我們先用一張表概述一下兩者的區(qū)別,然后再展開講解。


定義優(yōu)缺點(diǎn)
單繼承
一個(gè)子類只擁有一個(gè)父類優(yōu)點(diǎn):在類層次結(jié)構(gòu)上比較清晰
缺點(diǎn):結(jié)構(gòu)的豐富度有時(shí)不能滿足使用需求
多繼承(Java不支持,但可以用其它方式滿足多繼承使用需求)
一個(gè)子類擁有多個(gè)直接的父類優(yōu)點(diǎn):子類的豐富度很高
缺點(diǎn):容易造成混亂

單繼承

單繼承,是一個(gè)子類只擁有一個(gè)父類,如我們上面講過的Animal類和它的子類。單繼承在類層次結(jié)構(gòu)上比較清晰,但缺點(diǎn)是結(jié)構(gòu)的豐富度有時(shí)不能滿足使用需求。

多繼承(Java不支持,但可以實(shí)現(xiàn))

多繼承,是一個(gè)子類擁有多個(gè)直接的父類。這樣做的好處是子類擁有所有父類的特征,子類的豐富度很高,但是缺點(diǎn)就是容易造成混亂。下圖為一個(gè)混亂的例子。


Java雖然不支持多繼承,但是Java有三種實(shí)現(xiàn)多繼承效果的方式,分別是內(nèi)部類、多層繼承和實(shí)現(xiàn)接口。

內(nèi)部類可以繼承一個(gè)與外部類無關(guān)的類,保證了內(nèi)部類的獨(dú)立性,正是基于這一點(diǎn),可以達(dá)到多繼承的效果。

多層繼承:子類繼承父類,父類如果還繼承其他的類,那么這就叫多層繼承。這樣子類就會(huì)擁有所有被繼承類的屬性和方法。


實(shí)現(xiàn)接口無疑是滿足多繼承使用需求的最好方式,一個(gè)類可以實(shí)現(xiàn)多個(gè)接口滿足自己在豐富性和復(fù)雜環(huán)境的使用需求。類和接口相比,類就是一個(gè)實(shí)體,有屬性和方法,而接口更傾向于一組方法。舉個(gè)例子,就拿斗羅大陸的唐三來看,他存在的繼承關(guān)系可能是這樣的:


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

實(shí)現(xiàn)繼承除了上面用到的extends外,還可以用implements這個(gè)關(guān)鍵字實(shí)現(xiàn)。下面,讓我給你逐一講解一下。

extends關(guān)鍵字

在Java中,類的繼承是單一繼承,也就是說一個(gè)子類只能擁有一個(gè)父類,所以extends只能繼承一個(gè)類。其使用語法為:

class?子類名?extends?父類名{}

例如Dog類繼承Animal類,它是這樣的:

class?Animal{}?//定義Animal類
class?Dog?extends?Animal{}?//Dog類繼承Animal類

子類繼承父類后,就擁有父類的非私有的屬性和方法。如果不明白,請看這個(gè)案例,在IDEA下創(chuàng)建一個(gè)項(xiàng)目,創(chuàng)建一個(gè)test類做測試,分別創(chuàng)建Animal類和Dog類,Animal作為父類寫一個(gè)sayHello()方法,Dog類繼承Animal類之后就可以調(diào)用sayHello()方法。具體代碼為:

class?Animal?{
????public?void??sayHello()//父類的方法
????
{
????????System.out.println("hello,everybody");
????}
}
class?Dog?extends?Animal//繼承animal
{?}
public?class?test?{
????public?static?void?main(String[]?args)?{
???????Dog?dog=new?Dog();
???????dog.sayHello();
????}
}

點(diǎn)擊運(yùn)行的時(shí)候Dog子類可以直接使用Animal父類的方法。


implements 關(guān)鍵字

使用implements 關(guān)鍵字可以變相使Java擁有多繼承的特性,使用范圍為類實(shí)現(xiàn)接口的情況,一個(gè)類可以實(shí)現(xiàn)多個(gè)接口(接口與接口之間用逗號分開)。Java接口是一系列方法的聲明,一個(gè)接口中沒有方法的具體實(shí)現(xiàn) 。子類實(shí)現(xiàn)接口的時(shí)候必須重寫接口中的方法。

我們來看一個(gè)案例,創(chuàng)建一個(gè)test2類做測試,分別創(chuàng)建doA接口和doB接口,doA接口聲明sayHello()方法,doB接口聲明eat()方法,創(chuàng)建Cat2類實(shí)現(xiàn)doA和doB接口,并且在類中需要重寫sayHello()方法和eat()方法。具體代碼為:

interface?doA{
?????void?sayHello();
}
interface?doB{
?????void?eat();
????//以下會(huì)報(bào)錯(cuò)?接口中的方法不能具體定義只能聲明
????//public?void?eat(){System.out.println("eating");}
}
class?Cat2?implements??doA,doB{
????@Override//必須重寫接口內(nèi)的方法
????public?void?sayHello()?{
????????System.out.println("hello!");
????}
????@Override
????public?void?eat()?{
????????System.out.println("I'm?eating");
????}
}
public?class?test2?{
????public?static?void?main(String[]?args)?{
????????Cat2?cat=new?Cat2();
????????cat.sayHello();
????????cat.eat();
????}
}

Cat類實(shí)現(xiàn)doA和doB接口的時(shí)候,需要實(shí)現(xiàn)其聲明的方法,點(diǎn)擊運(yùn)行結(jié)果如下,這就是一個(gè)類實(shí)現(xiàn)接口的簡單案例:


繼承的特點(diǎn)

繼承的主要內(nèi)容就是子類繼承父類,并重寫父類的方法。使用子類的屬性或方法時(shí)候,首先要?jiǎng)?chuàng)建一個(gè)對象,而對象通過構(gòu)造方法去創(chuàng)建,在構(gòu)造方法中我們可能會(huì)調(diào)用子父類的一些屬性和方法,所以就需要提前掌握this和super關(guān)鍵字。創(chuàng)建完這個(gè)對象之后,在調(diào)用重寫父類的方法,并區(qū)別重寫和重載的區(qū)別。所以本節(jié)根據(jù)this、super關(guān)鍵字—>構(gòu)造函數(shù)—>方法重寫—>方法重載的順序進(jìn)行講解。

this和super關(guān)鍵字

this和super關(guān)鍵字是繼承中非常重要的知識點(diǎn),分別表示當(dāng)前對象的引用和父類對象的引用,兩者有很大相似又有一些區(qū)別。

this表示當(dāng)前對象,是指向自己的引用。

this.屬性 // 調(diào)用成員變量,要區(qū)別成員變量和局部變量
this.() // 調(diào)用本類的某個(gè)方法
this() // 表示調(diào)用本類構(gòu)造方法

super表示父類對象,是指向父類的引用。

super.屬性 // 表示父類對象中的成員變量
super.方法() // 表示父類對象中定義的方法
super() // 表示調(diào)用父類構(gòu)造方法

此外,this和super關(guān)鍵字只能出現(xiàn)在非static修飾的代碼中。

this()和super()都只能在構(gòu)造方法的第一行出現(xiàn),如果使用this()表示調(diào)用當(dāng)前類的其他構(gòu)造方法,使用super()表示調(diào)用父類的某個(gè)構(gòu)造方法,所以兩者只能根據(jù)自己使用需求選擇其一。

寫一個(gè)小案例,創(chuàng)建D1類和子類D2如下:

class?D1{
????public?D1()?{}//無參構(gòu)造
????public?void?sayHello()?{
????????System.out.println("hello");
????}
}
class?D2?extends?D1{
????public?String?name;
????public?D2(){
????????super();//調(diào)用父類構(gòu)造方法
????????this.name="BigSai";//給當(dāng)前類成員變量賦值
????}
????@Override
????public?void?sayHello()?{
????????System.out.println("hello,我是"+this.name);
????}
????public?void?test()
????
{
????????super.sayHello();//調(diào)用父類方法
????????this.sayHello();//調(diào)用當(dāng)前類其他方法
????}
}
public?class?test8?{
????public?static?void?main(String[]?args)?{
????????D2?d2=new?D2();
????????d2.test();
????}
}

執(zhí)行的結(jié)果為:


構(gòu)造方法

構(gòu)造方法是一種特殊的方法,它是一個(gè)與類同名的方法。對象的創(chuàng)建就通過構(gòu)造方法來完成,其主要的功能是完成對象的初始化。但在繼承中構(gòu)造方法是一種比較特殊的方法(比如不能繼承),所以要了解和學(xué)習(xí)在繼承中構(gòu)造方法的規(guī)則和要求。

構(gòu)造方法可分為有參構(gòu)造和無參構(gòu)造,這個(gè)可以根據(jù)自己的使用需求合理設(shè)置構(gòu)造方法。但繼承中的構(gòu)造方法有以下幾點(diǎn)需要注意:

父類的構(gòu)造方法不能被繼承:

因?yàn)闃?gòu)造方法語法是與類同名,而繼承則不更改方法名,如果子類繼承父類的構(gòu)造方法,那明顯與構(gòu)造方法的語法沖突了。比如Father類的構(gòu)造方法名為Father(),Son類如果繼承Father類的構(gòu)造方法Father(),那就和構(gòu)造方法定義:構(gòu)造方法與類同名沖突了,所以在子類中不能繼承父類的構(gòu)造方法,但子類會(huì)調(diào)用父類的構(gòu)造方法。

子類的構(gòu)造過程必須調(diào)用其父類的構(gòu)造方法:

Java虛擬機(jī)構(gòu)造子類對象前會(huì)先構(gòu)造父類對象,父類對象構(gòu)造完成之后再來構(gòu)造子類特有的屬性,這被稱為內(nèi)存疊加。而Java虛擬機(jī)構(gòu)造父類對象會(huì)執(zhí)行父類的構(gòu)造方法,所以子類構(gòu)造方法必須調(diào)用super()即父類的構(gòu)造方法。就比如一個(gè)簡單的繼承案例應(yīng)該這么寫:

class?A{
????public?String?name;
????public?A()?{//無參構(gòu)造
????}
????public?A?(String?name){//有參構(gòu)造
????}
}
class?B?extends?A{
????public?B()?{//無參構(gòu)造
???????super();
????}
????public?B(String?name)?{//有參構(gòu)造
??????//super();
???????super(name);
????}
}

如果子類的構(gòu)造方法中沒有顯示地調(diào)用父類構(gòu)造方法,則系統(tǒng)默認(rèn)調(diào)用父類無參數(shù)的構(gòu)造方法。

你可能有時(shí)候在寫繼承的時(shí)候子類并沒有使用super()調(diào)用,程序依然沒問題,其實(shí)這樣是為了節(jié)省代碼,系統(tǒng)執(zhí)行時(shí)會(huì)自動(dòng)添加父類的無參構(gòu)造方式,如果不信的話我們對上面的類稍作修改執(zhí)行:

image-20201026201029796

方法重寫(Override)

方法重寫也就是子類中出現(xiàn)和父類中一模一樣的方法(包括返回值類型,方法名,參數(shù)列表),它建立在繼承的基礎(chǔ)上。你可以理解為方法的外殼不變,但是核心內(nèi)容重寫。

在這里提供一個(gè)簡單易懂的方法重寫案例:

class?E1{
????public?void?doA(int?a){
????????System.out.println("這是父類的方法");
????}
}
class?E2?extends?E1{
????@Override
????public?void?doA(int?a)?{
????????System.out.println("我重寫父類方法,這是子類的方法");
????}
}

其中@Override注解顯示聲明該方法為注解方法,可以幫你檢查重寫方法的語法正確性,當(dāng)然如果不加也是可以的,但建議加上。

對于重寫,你需要注意以下幾點(diǎn):

從重寫的要求上看:

  • 重寫的方法和父類的要一致(包括返回值類型、方法名、參數(shù)列表)
  • 方法重寫只存在于子類和父類之間,同一個(gè)類中只能重載

從訪問權(quán)限上看:

  • 子類方法不能縮小父類方法的訪問權(quán)限
  • 子類方法不能拋出比父類方法更多的異常
  • 父類的私有方法不能被子類重寫

從靜態(tài)和非靜態(tài)上看:

  • 父類的靜態(tài)方法不能被子類重寫為非靜態(tài)方法
  • 子類可以定義于父類的靜態(tài)方法同名的靜態(tài)方法,以便在子類中隱藏父類的靜態(tài)方法(滿足重寫約束)
  • 父類的非靜態(tài)方法不能被子類重寫為靜態(tài)方法

從抽象和非抽象來看:

  • 父類的抽象方法可以被子類通過兩種途徑重寫(即實(shí)現(xiàn)和重寫)
  • 父類的非抽象方法可以被重寫為抽象方法

當(dāng)然,這些規(guī)則可能涉及一些修飾符,在第三關(guān)中會(huì)詳細(xì)介紹。

方法重載(Overload)

如果有兩個(gè)方法的方法名相同,但參數(shù)不一致,那么可以說一個(gè)方法是另一個(gè)方法的重載。方法重載規(guī)則如下:

  • 被重載的方法必須改變參數(shù)列表(參數(shù)個(gè)數(shù)或類型或順序不一樣)
  • 被重載的方法可以改變返回類型
  • 被重載的方法可以改變訪問修飾符
  • 被重載的方法可以聲明新的或更廣的檢查異常
  • 方法能夠在同一個(gè)類中或者在一個(gè)子類中被重載
  • 無法以返回值類型作為重載函數(shù)的區(qū)分標(biāo)準(zhǔn)

重載可以通常理解為完成同一個(gè)事情的方法名相同,但是參數(shù)列表不同其他條件也可能不同。一個(gè)簡單的方法重載的例子,類E3中的add()方法就是一個(gè)重載方法。

class?E3{
????public?int?add(int?a,int?b){
????????return?a+b;
????}
????public?double?add(double?a,double?b)?{
????????return?a+b;
????}
????public?int?add(int?a,int?b,int?c)?{
????????return?a+b+c;
????}
}

方法重寫和方法重載的區(qū)別

方法重寫和方法重載名稱上容易混淆,但內(nèi)容上有很大區(qū)別,下面用一個(gè)表格列出其中區(qū)別:

區(qū)別點(diǎn)方法重寫方法重載
結(jié)構(gòu)上垂直結(jié)構(gòu),是一種父子類之間的關(guān)系水平結(jié)構(gòu),是一種同類之間關(guān)系
參數(shù)列表不可以修改可以修改
訪問修飾符子類的訪問修飾符范圍必須大于等于父類訪問修飾符范圍可以修改
拋出異常子類方法異常必須是父類方法異?;蚋割惙椒ó惓W赢惓?/td>可以修改

繼承與修飾符

Java修飾符的作用就是對類或類成員進(jìn)行修飾或限制,每個(gè)修飾符都有自己的作用,而在繼承中可能有些特殊修飾符使得被修飾的屬性或方法不能被繼承,或者繼承需要一些其他的條件,下面就詳細(xì)介紹在繼承中一些修飾符的作用和特性。

Java語言提供了很多修飾符,修飾符用來定義類、方法或者變量,通常放在語句的最前端。主要分為以下兩類:

  • 訪問修飾符
  • 非訪問修飾符

這里訪問修飾符主要講解public,protected,default,private四種訪問控制修飾符。非訪問修飾符這里就介紹static修飾符,final修飾符和abstract修飾符。

訪問修飾符

public,protected,default(無修飾詞),private修飾符是面向?qū)ο笾蟹浅V匾闹R點(diǎn),而在繼承中也需要懂得各種修飾符使用規(guī)則。

首先我們都知道不同的關(guān)鍵字作用域不同,四種關(guān)鍵字的作用域如下:


同一個(gè)類同一個(gè)包不同包子類不同包非子類
private?


default??

protect???
public????
  1. private:Java語言中對訪問權(quán)限限制的最窄的修飾符,一般稱之為“私有的”。被其修飾的屬性以及方法只能被該類的對象訪問,其子類不能訪問,更不能允許跨包訪問。

  2. default:(也有稱friendly)即不加任何訪問修飾符,通常稱為“默認(rèn)訪問權(quán)限“或者“包訪問權(quán)限”。該模式下,只允許在同一個(gè)包中進(jìn)行訪問。

  3. protected:介于public 和 private 之間的一種訪問修飾符,一般稱之為“保護(hù)訪問權(quán)限”。被其修飾的屬性以及方法只能被類本身的方法及子類訪問,即使子類在不同的包中也可以訪問。

  4. public:Java語言中訪問限制最寬的修飾符,一般稱之為“公共的”。被其修飾的類、屬性以及方法不僅可以跨類訪問,而且允許跨包訪問。

Java 子類重寫繼承的方法時(shí),不可以降低方法的訪問權(quán)限,子類繼承父類的訪問修飾符作用域不能比父類小,也就是更加開放,假如父類是protected修飾的,其子類只能是protected或者public,絕對不能是default(默認(rèn)的訪問范圍)或者private。所以在繼承中需要重寫的方法不能使用private修飾詞修飾。

如果還是不太清楚可以看幾個(gè)小案例就很容易搞懂,寫一個(gè)A1類中用四種修飾詞實(shí)現(xiàn)四個(gè)方法,用子類A2繼承A1,重寫A1方法時(shí)候你就會(huì)發(fā)現(xiàn)父類私有方法不能重寫,非私有方法重寫使用的修飾符作用域不能變小(大于等于)。


正確的案例應(yīng)該為:

class?A1?{
????private?void?doA(){?}
????void?doB(){}//default
????protected?void?doC(){}
????public?void?doD(){}
}
class?A2?extends?A1{

????@Override
????public?void?doB()?{?}//繼承子類重寫的方法訪問修飾符權(quán)限可擴(kuò)大

????@Override
????protected?void?doC()?{?}//繼承子類重寫的方法訪問修飾符權(quán)限可和父類一致

????@Override
????public?void?doD()?{?}//不可用protected或者default修飾
}

還要注意的是,繼承當(dāng)中子類拋出的異常必須是父類拋出的異?;蚋割悞伋霎惓5淖赢惓?/strong>。下面的一個(gè)案例四種方法測試可以發(fā)現(xiàn)子類方法的異常不可大于父類對應(yīng)方法拋出異常的范圍。


正確的案例應(yīng)該為:

class?B1{
????public?void?doA()?throws?Exception{}
????public?void?doB()?throws?Exception{}
????public?void?doC()?throws?IOException{}
????public?void?doD()?throws?IOException{}
}
class?B2?extends?B1{
????//異常范圍和父類可以一致
????@Override
????public?void?doA()?throws?Exception?{?}
????//異常范圍可以比父類更小
????@Override
????public?void?doB()?throws?IOException?{?}
????//異常范圍?不可以比父類范圍更大
????@Override
????public?void?doC()?throws?IOException?{?}//不可拋出Exception等比IOException更大的異常
????@Override
????public?void?doD()?throws?IOException?{?}
}

非訪問修飾符

訪問修飾符用來控制訪問權(quán)限,而非訪問修飾符每個(gè)都有各自的作用,下面針對static、final、abstract修飾符進(jìn)行介紹。

static 修飾符

static 翻譯為“靜態(tài)的”,能夠與變量,方法和類一起使用,稱為靜態(tài)變量,靜態(tài)方法(也稱為類變量、類方法)。如果在一個(gè)類中使用static修飾變量或者方法的話,它們可以直接通過類訪問,不需要?jiǎng)?chuàng)建一個(gè)類的對象來訪問成員。

我們在設(shè)計(jì)類的時(shí)候可能會(huì)使用靜態(tài)方法,有很多工具類比如Math,Arrays等類里面就寫了很多靜態(tài)方法。static修飾符的規(guī)則很多,這里僅僅介紹和Java繼承相關(guān)用法的規(guī)則:

  • 構(gòu)造方法不允許聲明為 static 的。
  • 靜態(tài)方法中不存在當(dāng)前對象,因而不能使用 this,當(dāng)然也不能使用 super。
  • 靜態(tài)方法不能被非靜態(tài)方法重寫(覆蓋)
  • 靜態(tài)方法能被靜態(tài)方法重寫(覆蓋)

可以看以下的案例證明上述規(guī)則:


源代碼為:

class?C1{
????public??int?a;
????public?C1(){}
???//?public?static?C1(){}//?構(gòu)造方法不允許被聲明為static
????public?static?void?doA()?{}
????public?static?void?doB()?{}
}
class?C2?extends?C1{
????public?static??void?doC()//靜態(tài)方法中不存在當(dāng)前對象,因而不能使用this和super。
????
{
????????//System.out.println(super.a);
????}
????public?static?void?doA(){}//靜態(tài)方法能被靜態(tài)方法重寫
???//?public?void?doB(){}//靜態(tài)方法不能被非靜態(tài)方法重寫
}

final修飾符

final變量:

  • final 表示"最后的、最終的"含義,變量一旦賦值后,不能被重新賦值。被 final 修飾的實(shí)例變量必須顯式指定初始值(即不能只聲明)。final 修飾符通常和 static 修飾符一起使用來創(chuàng)建類常量。

final 方法:

  • 父類中的 final 方法可以被子類繼承,但是不能被子類重寫。聲明 final 方法的主要目的是防止該方法的內(nèi)容被修改。

final類:

  • final 類不能被繼承,沒有類能夠繼承 final 類的任何特性。

所以無論是變量、方法還是類被final修飾之后,都有代表最終、最后的意思。內(nèi)容無法被修改。

abstract 修飾符

abstract 英文名為“抽象的”,主要用來修飾類和方法,稱為抽象類和抽象方法。

抽象方法:有很多不同類的方法是相似的,但是具體內(nèi)容又不太一樣,所以我們只能抽取他的聲明,沒有具體的方法體,即抽象方法可以表達(dá)概念但無法具體實(shí)現(xiàn)。

抽象類有抽象方法的類必須是抽象類,抽象類可以表達(dá)概念但是無法構(gòu)造實(shí)體的類。

抽象類和抽象方法內(nèi)容和規(guī)則比較多。這里只提及一些和繼承有關(guān)的用法和規(guī)則:

  • 抽象類也是類,如果一個(gè)類繼承于抽象類,就不能繼承于其他的(類或抽象類)
  • 子類可以繼承于抽象類,但是一定要實(shí)現(xiàn)父類們所有abstract的方法。如果不能完全實(shí)現(xiàn),那么子類也必須被定義為抽象類
  • 只有實(shí)現(xiàn)父類的所有抽象方法,才能是完整類。

比如我們可以這樣設(shè)計(jì)一個(gè)People抽象類以及一個(gè)抽象方法,在子類中具體完成:

abstract?class?People{
????public?abstract?void?sayHello();//抽象方法
}
class?Chinese?extends?People{
????@Override
????public?void?sayHello()?{//實(shí)現(xiàn)抽象方法
????????System.out.println("你好");
????}
}
class?Japanese?extends?People{
????@Override
????public?void?sayHello()?{//實(shí)現(xiàn)抽象方法
????????System.out.println("口你七哇");
????}
}
class?American?extends?People{
????@Override
????public?void?sayHello()?{//實(shí)現(xiàn)抽象方法
????????System.out.println("hello");
????}
}

Object類和轉(zhuǎn)型

提到Java繼承,不得不提及所有類的根類:Object(java.lang.Object)類,如果一個(gè)類沒有顯式聲明它的父類(即沒有寫extends xx),那么默認(rèn)這個(gè)類的父類就是Object類,任何類都可以使用Object類的方法,創(chuàng)建的類也可和Object進(jìn)行向上、向下轉(zhuǎn)型,所以O(shè)bject類是掌握和理解繼承所必須的知識點(diǎn)。而Java向上和向下轉(zhuǎn)型在Java中運(yùn)用很多,也是建立在繼承的基礎(chǔ)上,所以Java轉(zhuǎn)型也是掌握和理解繼承所必須的知識點(diǎn)。

Object類概述

  1. Object是類層次結(jié)構(gòu)的根類,所有的類都隱式的繼承自O(shè)bject類。

  2. Java所有的對象都擁有Object默認(rèn)方法

  3. Object類的構(gòu)造方法有一個(gè),并且是無參構(gòu)造

Object是java所有類的父類,是整個(gè)類繼承結(jié)構(gòu)的頂端,也是最抽象的一個(gè)類。像toString()、equals()、hashCode()、wait()、notify()、getClass()等都是Object的方法。你以后可能會(huì)經(jīng)常碰到,但其中遇到更多的就是toString()方法和equals()方法,我們經(jīng)常需要重寫這兩種方法滿足我們的使用需求。

**toString()**方法表示返回該對象的字符串,由于各個(gè)對象構(gòu)造不同所以需要重寫,如果不重寫的話默認(rèn)返回類名@hashCode格式。

如果重寫toString()方法后直接調(diào)用toString()方法就可以返回我們自定義的該類轉(zhuǎn)成字符串類型的內(nèi)容輸出,而不需要每次都手動(dòng)的拼湊成字符串內(nèi)容輸出,大大簡化輸出操作。

**equals()方法主要比較兩個(gè)對象是否相等,因?yàn)閷ο蟮南嗟炔灰欢ǚ且獓?yán)格要求兩個(gè)對象地址上的相同,有時(shí)內(nèi)容上的相同我們就會(huì)認(rèn)為它相等,比如String 類就重寫了euqals()**方法,通過字符串的內(nèi)容比較是否相等。


向上轉(zhuǎn)型

向上轉(zhuǎn)型 : 通過子類對象(小范圍)實(shí)例化父類對象(大范圍),這種屬于自動(dòng)轉(zhuǎn)換。用一張圖就能很好地表示向上轉(zhuǎn)型的邏輯:


父類引用變量指向子類對象后,只能使用父類已聲明的方法,但方法如果被重寫會(huì)執(zhí)行子類的方法,如果方法未被重寫那么將執(zhí)行父類的方法。

向下轉(zhuǎn)型

向下轉(zhuǎn)型 : 通過父類對象(大范圍)實(shí)例化子類對象(小范圍),在書寫上父類對象需要加括號()強(qiáng)制轉(zhuǎn)換為子類類型。但父類引用變量實(shí)際引用必須是子類對象才能成功轉(zhuǎn)型,這里也用一張圖就能很好表示向上轉(zhuǎn)型的邏輯:


子類引用變量指向父類引用變量指向的對象后(一個(gè)Son()對象),就完成向下轉(zhuǎn)型,就可以調(diào)用一些子類特有而父類沒有的方法 。

在這里寫一個(gè)向上轉(zhuǎn)型和向下轉(zhuǎn)型的案例:

Object?object=new?Integer(666);//向上轉(zhuǎn)型

Integer?i=(Integer)object;//向下轉(zhuǎn)型Object->Integer,object的實(shí)質(zhì)還是指向Integer

String?str=(String)object;//錯(cuò)誤的向下轉(zhuǎn)型,雖然編譯器不會(huì)報(bào)錯(cuò)但是運(yùn)行會(huì)報(bào)錯(cuò)

子父類初始化順序

在Java繼承中,父子類初始化先后順序?yàn)椋?/p>

  1. 父類中靜態(tài)成員變量和靜態(tài)代碼塊

  2. 子類中靜態(tài)成員變量和靜態(tài)代碼塊

  3. 父類中普通成員變量和代碼塊,父類的構(gòu)造函數(shù)

  4. 子類中普通成員變量和代碼塊,子類的構(gòu)造函數(shù)

總的來說,就是靜態(tài)>非靜態(tài),父類>子類,非構(gòu)造函數(shù)>構(gòu)造函數(shù)。同一類別(例如普通變量和普通代碼塊)成員變量和代碼塊執(zhí)行從前到后,需要注意邏輯。

這個(gè)也不難理解,靜態(tài)變量也稱類變量,可以看成一個(gè)全局變量,靜態(tài)成員變量和靜態(tài)代碼塊在類加載的時(shí)候就初始化,而非靜態(tài)變量和代碼塊在對象創(chuàng)建的時(shí)候初始化。所以靜態(tài)快于非靜態(tài)初始化。

而在創(chuàng)建子類對象的時(shí)候需要先創(chuàng)建父類對象,所以父類優(yōu)先于子類。

而在調(diào)用構(gòu)造函數(shù)的時(shí)候,是對成員變量進(jìn)行一些初始化操作,所以普通成員變量和代碼塊優(yōu)于構(gòu)造函數(shù)執(zhí)行。

至于更深層次為什么這個(gè)順序,就要更深入了解JVM執(zhí)行流程啦。下面一個(gè)測試代碼為:

class?Father{
????public?Father()?{
????????System.out.println(++b1+"父類構(gòu)造方法");
????}//父類構(gòu)造方法?第四
????static?int?a1=0;//父類static?第一?注意順序
????static?{
????????System.out.println(++a1+"父類static");
????}
????int?b1=a1;//父類成員變量和代碼塊?第三
????{
????????System.out.println(++b1+"父類代碼塊");
????}
}
class?Son?extends?Father{
????public?Son()?{
????????System.out.println(++b2+"子類構(gòu)造方法");
????}//子類構(gòu)造方法?第六
????static?{//子類static第二步
????????System.out.println(++a1+"子類static");
????}
????int?b2=b1;//子類成員變量和代碼塊?第五
????{
????????System.out.println(++b2?+?"子類代碼塊");
????}
}
public?class?test9?{
????public?static?void?main(String[]?args)?{
????????Son?son=new?Son();
????}
}

執(zhí)行結(jié)果:


結(jié)語

好啦,本次繼承就介紹到這里啦,Java面向?qū)ο笕筇卣髦焕^承——優(yōu)秀的你已經(jīng)掌握。再看看Java面向?qū)ο笕筇匦裕悍庋b、繼承、多態(tài)。最后問你能大致了解它們的特征嘛?

封裝:是對類的封裝,封裝是對類的屬性和方法進(jìn)行封裝,只對外暴露方法而不暴露具體使用細(xì)節(jié),所以我們一般設(shè)計(jì)類成員變量時(shí)候大多設(shè)為私有而通過一些get、set方法去讀寫。

繼承:子類繼承父類,即“子承父業(yè)”,子類擁有父類除私有的所有屬性和方法,自己還能在此基礎(chǔ)上拓展自己新的屬性和方法。主要目的是復(fù)用代碼

多態(tài):多態(tài)是同一個(gè)行為具有多個(gè)不同表現(xiàn)形式或形態(tài)的能力。即一個(gè)父類可能有若干子類,各子類實(shí)現(xiàn)父類方法有多種多樣,調(diào)用父類方法時(shí),父類引用變量指向不同子類實(shí)例而執(zhí)行不同方法,這就是所謂父類方法是多態(tài)的。

最后送你一張圖捋一捋其中的關(guān)系吧。




原創(chuàng)電子書

原創(chuàng)思維導(dǎo)圖


已經(jīng)有8756個(gè)初學(xué)者都下載了!?三歪把【大廠面試知識點(diǎn)】、【簡歷模板】、【原創(chuàng)文章全部整理成電子書,共有1263頁!掃碼或微信搜 Java3y?回復(fù)「888」領(lǐng)取

瀏覽 43
點(diǎn)贊
評論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)
評論
圖片
表情
推薦
點(diǎn)贊
評論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 黄页免费无码| 特级毛片www| 色欲AV在线| 女人自慰网站在线观看| 91在线欧美| 大香蕉免费在线观看| 欧美大香蕉在线视频| 強姦婬片A片AAA毛片Mⅴ| 日韩在线中文字幕亚洲| 东京热日韩无码| 77777精品成人免费A片| 亚洲成人AV无码| 婷婷五月天综合网| 五月伊人婷婷| chinese高潮老女人| 一本色道久久综合无码人妻软件 | 五月丁香六月激情| 色情片在线播放| 日韩成人一级片| 午夜高清| 欧美日韩有码视频网址大全| 国产69AV| 欧美一区二区在线视频| 麻豆国产91在线播放| 特一级黄色片| 五月天四房播播| 亚洲中文字幕在线视频播放| 毛多水多丰满女人A片| 无码免费高清| 99日韩无码| 可以看的毛片| 香蕉操逼视频| 成人AV免费观看| 人人操人人操人人操人人操| 国产91探花秘入口| 无码秘蜜桃一区二区| 日韩AA片| 日韩在线精品视频| 国产曰韩欧美综合另类在线 | 爽妇综合网| 欧美性爱小说| 在线观看不卡av| 亚洲精品成AV人片天堂无码 | 你懂的视频网站| 北条麻妃在线观看香蕉| 亚洲无码在线资源| 中日毛片| 国产无码免费视频| 国产精品嫩草久久久久yw193| 波多野结衣久久中文字幕| 黄色欧美视频| 江苏妇搡BBBB搡BBBB-百度| 人妻熟女一区二区| 免费无码在线看| 国产熟妇码视频app| 国产成人精品一区二三区熟女在线 | 中文字幕亚洲人妻| 高清无码做爱视频| 亚洲精品天堂无码AV片| 青娱乐精品在线视频| av六月天| 中文字幕在线视频观看| 残忍另类BBWBBWBBW| 天堂网免费视频| 五月婷婷色| 国产黄色免费看| 亚洲AV无码成人精品| 欧美在线一区二区三区| 亚洲午夜视频在线观看| 午夜丁香| 亚洲专区视频| 东京热视频网| www.sese| 国产一区不卡| 天堂在线| 亚洲无码高清视频在线观看| 久久悠悠| 久久成人毛片| 国产一区二区在线视频| 亚洲欧美国产精品专区久久| 亚洲无码综合| 一夲道无码专区av无码A片| 黑人av在线| 免费a网站| 免费无码在线观看| 精品二区| 日韩欧美在线播放| www.sesese| 一区二区三区在线看| 国产群交| 99re在线| 伊人久久狼人| 亚洲无码视频在线观看高清| 韩国毛片基地久久| 香蕉成人视频| 白丝久久| 国产一区二区免费在线观看| 性欧美xxxx| 大香蕉伊人手机在线| 亚洲成人77777| sm视频网站| 六月丁香综合| 国产成人久久777777| 欧美成人网址在线观看| 在线观看av资源| 国产一级a免一级a免费| 日韩成人大片| 在线观看的AV| 精品无码三级在线观看视频 | 久久草大香蕉| 欧美中文在线观看| 69国产精品成人无码| www.yw尤物| 免费看一级一级人妻片| 六月激情| 中文无码字幕| 开心激情网站| 毛片黄色片| 99国产精品久久久久久久| 青娱乐国产精品一区二区| 日韩Va| 国产精品嫩草久久久久yw193 | 蜜臀av在线观看| 久久韩国| 久草资源网| 免费草逼视频| 大鸡巴导航| 操B网站| 性爱久久久| 亚欧洲精品视频| 国产区视频| 日本成人一区二区| 黄色av免费网站| 成人免费精品视频| 色综合中文字幕| 国产精品主播| 中国字幕在线观看韩国电影| 一级片日韩| 亚洲精品成人无码| 日本三级片免费观看| 欧美h网站| 国产天堂av| www在线播放| 色婷婷五月天激情| 欧美性BBB槡BBB槡BBB| 国产91探花秘入口| 久草手机在线视频| 国产成人亚洲日韩| 嫩草视频在线观看免费网站| 91色五月| 久久久91人妻无码精品蜜桃ID| 久久中文字幕人妻| 亚洲无码在线视频观看| 97精品在线视频| 91成人免费| AV黄片| 国产十欧洲十美国+亚洲一二三区在线午夜 | A级毛片在线观看| 亚洲热在线观看| 玩弄小怮女在线观看| 俺来也官网欧美久久精品| 日韩不卡免费| 精品一区二区三区无码| 91西安站街老熟女露脸| 日韩欧美国产成人| 欧美成人在线观看视频| 亚洲无码视频观看| 欧美欧美欧美| 午夜av电影| 午夜免费无码| 123好逼网| 草草在线视频| 青娱乐青青草| 西西444大胆无码视频| 五月丁香人妻| 久久肉| 美日韩免费视频| 婷婷伊人綜合中文字幕| 久久久性爱| 麻豆疯狂做受XXXX高潮视频 | 国产热| 免费一级网站| 欧美日韩免费在线| HEZ-502搭讪绝品人妻系列| 成人福利在线| 91双飞会所双飞在线| 国产精品AV一区| 五月丁香六月激情综合| 日本天天操| 欧美精品三级| 操老女人视频| 亚洲综合网在线| 成人一区二区在线观看| 日本毛片在线观看| 天干天干天夜夜爽| 初学影院WWWBD英语完整版在线观看 | 91美女网站| 欧美午夜福利| 日韩欧美中文在线观看| 国产日韩中文字幕| 国产黄色性爱视频| 成人啪啪视频| 亚洲人在线观看| 三级无码在线播放| 精品国产欧美| 日本黄色视频在线播放| 熟女探花精选| 精品国产精品三级精品AV网址| 日韩一级片免费| 免费无码进口视频| 久久久国产视频| 高清无码中文字| 人人超碰在线| 中文字幕av久久爽Av| 中文字幕在线免费观看视频| 国产精品久久久91| 日韩久久婷婷| 69精品无码成人久久久久久| 免费国产视频| 国产无遮挡又黄又爽又| 天堂久久久久| 秋霞午夜| 大鸡巴黄色视频免费观看| 91视频电影| 欧美色视频一区二区三区在线观看 | www.99国产| 免费成人黄片| 色天使色天堂| 成人动漫| 波多野成人无码精品视频| 亚洲欧洲在线视频| 美女少妇激情BBBB| 国产欧美日韩在线视频| 天天插夜夜操| 北条麻妃无码视频| 99久久久精品久久久久久| 国产色情视频在线观看| 最新AV| 亚洲天堂2014| 日韩一级免费在线观看| 亚洲成人免费在线观看| 日韩www| 高清无码视频免费版本在线观看| 成人久久久久| 91九九| 91精品国产乱码| 中文字幕高清无码在线| 人人插人人干| 毛片自拍| 久热免费视频在线观看| 欧美日韩三区| aaa在线免费视频| 欧美综合婷婷| 女人AV天堂| 一欧美日韩免费/看| 久久久久一区二区三区| 嫩BBB揍BBB揍BBB| 久久精品一区二区三区四区五区| 欧亚一区二区| 三级免费| 欧美日韩免费| 国产日韩二区| 色综合一区二区三区| 欧美日韩免费| 麻豆一级| 欧美理论片在线观看| 亚洲AV无码第一区二区三区蜜桃 | 五月天黄色电影| 操操操操| 国产色综合视频| 亚洲小电影| 色播视频在线观看| 精品人妻一区二区蜜桃视频| 丁香婷婷男人天堂| 北条麻妃99精品青青久久| 少妇bbw搡bbbb搡bbbb| 一区二区三区四区五区六区高清无吗视频 | 444444在线观看免费高清电视剧木瓜一 | 一级黄色免费电影| 免费精品黄色网页| 国产在线播放91| 怡红院男人天堂| 免费的一级A片| 性爱视频小说| 亚洲第一福利视频| 中文字幕无码Av在线| 一道本高清无码视频| 欧美成人视频| 色播欧美| 国内精品久久久| 18+免费网站| 五月琪琪| www黄片| 久久婷婷五月丁香| 亭亭五月丁香| 日本少妇久久| 国产黄色视频网站在线观看| 国产91无码精品秘入口在线观看| 在线免费观看黄色网址| 美女网站在线观看| 亚洲性爱手机版| 久久艹久久| 在线播放你懂的| 国产小福利| 黄色二区| 欧美日本一区二区三区| 91小视频在线| 免费操逼| 免费黄色片子| 国产乱码一区二区三区四区在线 | 丁香激情五月天| 91精品国产综合久久久久久久 | 国产日韩欧美在线| 91久久精品日日躁夜夜躁欧美| 亚洲精品一区二三区不卡| 亚洲欧美日韩在线| 99热网| 免费人成年激情视频在线观看| 97AV在线| 国产无码高清| 色人天堂| 日韩欧美三级| 在线观看三级| 亚洲成人日韩| 日韩大片在线| 亚洲精品国产成人综合久久久久久久久| 欧美在线国产| 激情伊人| 欧美色成人免费在线视频| 色综合999| 丰滿老婦BBwBBwBBw| 偷拍视频图片综合网| 色久在线| 国产夫妻自拍av| 在线少妇| 日韩黄色电影在线| 翔田千里无码在线| 这里视频很精彩免费观看电视剧最新| 国产无码二区| 午夜免费性爱视频| 综合久久亚洲| 熟女探花精选| 国产女人18毛片水18精品| 欧美伊人| av一级| 高清一区二区| 第一页在线观看| 黄色毛片网站| 不卡a12| 久久久国产视频| 成人做爰黄A片免费看| 欧美视频一区二区三区四区| 国产91探花精品一区二区| 江苏妇搡BBBB搡BBBB| 激情人妻网站| 中国老女人操逼| 热九九精品| 日韩av电影在线观看| 青青草原免费在线视频| 一级免费黄色电影| 欧美黄色成人视频| 无码人妻一区二区三区精品不付款| 亚洲有码在线视频| 91精品久久人妻一区二区夜夜夜| 免费在线观看一区| 91操操| 国产免费福利| 婷婷亚洲综合| 欧美囗交大荫蒂免费| 伊人色女操穴综合网| 天堂一区在线观看| 操青青| 十八禁无码网站在线观看| 日本少妇久久| 日韩成人黄色电影| 黄色三极片| 俺来俺去| a片网站在线观看| 免费在线观看黄色| 精品一区三区| www.四虎成人网站| 欧美一级爱| 天堂网址激情网址| 久久久久久综合| 91成人毛片| 性爱无码网站| 影音先锋AV天堂| 久久精品国产视频| 网站啪啪| 亚洲AV日韩AV永久无码网站| 国产69精品久久久久久| 国产久久免费视频| 制服丝袜大香蕉| 精品国产一二三区| 欧美精品综合| 蜜桃视频无码区在线观看| 51福利视频| 欧美视频基地| 亚洲AV三级片| 国产操比视频| 先锋资源日韩| 色色成人网| 国产午夜激情视频| 精品91美女| 大香蕉超碰在线| 日韩无码一卡二卡| 黄片免费观看视频| www.污污污| 动图综合亚洲综合欧美男男| 一级国产欧美成人A片| 青青免费视频| 日韩A级毛片| 亚洲综合视频网| 免费看黄片网站| 亚洲秘一区二区三区-精品亚洲二区-| 日韩AV一区二区在线观看| 亚洲视频国产| 国产AⅤ无码一区二区| 91香蕉视频在线| 国产成人无码免费| av一二三区| www.水蜜桃| 亚洲成人免费在线| 奇米四色秒播| 爱液视频| 欧洲性爱视频在线观看| 三级视频网站| 丁香五月五月婷婷| 中国老熟女2老女人| 黄色片在线免费看| 国产成人精品无码区在线| 偷偷操av| 亚洲综合视频在线观看| 在线中文字幕亚洲| 久草黄色电影在线观看| 东京热小视频| 日韩无码视频播放| 成人aaa| 蜜臀久久99精品久久久兰草影视| 五月天深爱激情网| 亚洲性网| 日本精品人妻| 人人妻人人玩澡人人爽| 日韩精品人妻中文字幕有码| 性爱AV天堂| 久草视频在线免费| 亚洲一二三四| 俄罗斯白嫩BBwBBwBBw91| 18禁网站在线看| 国产特级毛片| 青草青草视频| 精品乱子伦一区二区三区下载 | 日韩免费视频一区二区| 强伦轩一区二区三区在线观看| 色色色无码| 蜜桃秘av一区二区三区安全| 夜夜骚av.一区二区三区四区| 日韩av中文在线| 天天添天天干| 中文字幕99页| 婷婷五月18永久免费视频| 国产精品一区二区在线| 国产视频在线播放| 综合视频一区| 日韩无码精品视频| 精品久久一区| 国产第七页| 伊人狼人香蕉| 99热这里只有精品1| 在线se| 西西4444www无码精品| www.色五月| 中文字幕日本人妻| 亚洲天堂在线观看网站| 中国老女人操逼| 肏逼网址| 特一级黄色| 无码射精电影| 大屌色| 国产成人精品一区二区三区视频| 夜色福利网| 在线一区二区三区四区| 黄色免费看视频| 五月天激情av| 亚洲女与黑人正在播放| 亚洲综合免费观看高清完整版| 亚洲A片一区二区三区电影网 | 欧美日韩A片欧美日| av无码在线播放| 中日韩特黄A片免费视频| 免费一级A| 无码高清在线| 十八禁在线播放| 亚洲视频,中文字幕| 中文字幕亚洲观看| 美女毛片视频| 在线看片你懂的| 午夜日逼网站| 亚洲综合网在线| 91AV在线播放| 女人AV天堂| 91熟女偷情| 西西444WWW无码大胆在线观看 | 先锋AV资源站| 97在线鲁碰免费视频| 欧美性猛交XXXX乱大交3| 欧美一级AA大片免费看视频| 蜜桃久久精品成人无码AV| www一个人免费观看视频www| h片免费在线观看| 亚洲日韩成人在线| 欧美日韩性色无码免费| 亚洲婷婷丁香| 亚洲影音先锋| 国产精品无码天天爽视频| 国产人体视频| 最新毛片网站〖网:.〗| 日韩无码免费| 69人妻人人澡人人爽人人精品| 综合久久中文字幕| 国产黄片在线视频| 国产无遮挡又黄又爽在线观看| 亚洲在线看| 97精品在线视频| 天天爽天天爽夜夜爽毛片| 三级乱伦视频| 久久精品禁一区二区三区四区五区| 在线观看免费无码视频| 亚洲欧美激情小说| 国产精品永久久久久久久久久 | 色色五月婷婷| 亚洲1区2区| 日韩精品无码电影| 操逼免费观看视频| 亚洲成人一区二区在线观看| 亚洲精品福利| 亚洲AV无码久久精品色无码蜜桃| 高清无码不卡在线观看| 夜夜操天天| 91大神在线资源观看无广告| 天堂精品| 人人澡人人添人人爽人人| 不卡无码高清| 综合AV在线| 97精品人妻麻豆一区二区| 黄色大片网站| 日本A级视频| 国产精品99久久久久久成人| 婷久久久| 强行征服邻居人妻HD高清日本 | 中韩日美免费看的电影| 广西少妇BBwBBwBBw| 99视频精品在线| a片视频网站| 日逼视频网| 大香蕉啪啪啪啪| 中文字幕观看av| 亚洲AV成人无码| 淫淫五月天| 免费看黄在线看| 亚洲欧洲高清无码| 五月色婷婷综合| 午夜无码在线观看视频| 亚洲日韩视频在线观看| 大屌色| 精品国产欧美| 国产精品高潮呻吟| 在线伊人网| 久久国产精品影院| 网站色色免费看| 黄色精品视频| 欧美熟妇精品一级A片视色| AV中文在线观看| 波多在线视频| 手机看片亚洲| 日韩色爱| 亚洲国产av电影| 国产一级婬片A片免费妖精视频| 中文字幕在线观看免费| 不卡AV在线| 天天综合网久久综合网| 国产人妻在线| 人人干视频| 91亚洲影院| 中字幕视频在线永久在线观看免费| 亚洲视频日韩在线观看| 精品视频久久| 中国熟妇XXXX18| 日韩另类视频| 玖玖99视频| ww无码| 久色天堂| 日批网站在线| 欧美成人性爱影院| 成人毛片在线大全免费| 亚洲91黄色片| 亚洲18禁| 美日韩毛片| 欧美v在线| 激情av在线| 国产精品免费人成人网站酒店| 欧美区亚洲区| 国产免费性爱| 国产最新AV| 色情片在线播放| av在线影院| 亚洲AV五月天在线| 影音先锋一区| 日本色综合| 双飞人妻13p| www.国产在线观看| 亚洲色图成人网| 99热3| 中日毛片| 嫩草久久99www亚洲红桃| 无码中文一区| 欧美在线一级片| 国产亚洲精品久久久波多野结衣 | 国产精品女人精品久久久天天| 日本三级片在线动| 日韩人妻无码精品| 亚洲精品电影| 色噜噜狠狠色综无码久久合欧美| 91大鸡巴| 国产三级片在线免费观看| www国产精品| 亚洲精品无码视频在线观看| 欧美性爱xxxx| 最近中文字幕在线中文字幕7| 777777国产7777777| 西西人体视频| 日韩性爱片| 国内自拍视频网站| 变态另类av| 超碰人人人人人人人人| 午夜精品一区二区三区在线成人| 人人肏人人射| YOUjiZZ欧美大全| 无码视屏| 国产综合亚洲精品一区二| 色综合五月| 国产成人无码毛片| 成人操B视频在线观看| 日韩av三级在线观看| gogogo高清在线观看免费直播中国 | A免费在线观看| 国精品无码A区一区二区| 91精品国产91久久久久久吃药| 国产A片一区| 日韩AV成人无码久久电影| 亚洲天堂福利| 天天操视频网站| 伊人黄色网| av一二三区| jizz在线观看免费视频| 91嫩草久久久久久久| 欧美久久婷婷| 苍井空一区二区三区四区| 夜色精品视频| 中文字幕资源在线| 日韩一级免费观看| 亚洲免费观看在线观看| 国产精品v欧美精品v日韩精品 | 亚洲va国产va天堂va久久| www.黄色视频| 91人人干| 色婷婷综合在线| 500部大龄熟乱4K视频| 中文字幕乱妇无码Av在线| 蜜桃视频一区| 狠狠躁日日躁夜夜躁A片无码视频| 亚洲精品欧美| 无码视频网站| 青青草原av| 国产精品天天AVJ精麻传媒| 亚洲一区二区三区在线++中国| 日本乱伦电影中文字幕| 不卡一二三区| 国产黄色视频观看| 一级国产片| 国产伦精品一区二区三区色大师 | 婷婷日逼| 影音先锋男人天堂| 亚洲AV无码成人片在线| 九九五月天| 日本天堂在线视频| 艹逼在线观看| 开心色情| 在线视频日本| 东方AV在线播放| 国产一二三四区| 亚洲国产精品成人久久蜜臀| 一级av片| 最新AV| 操碰在线| 国外成人视频| 体内射精免费视频| 黄色视频高潮| 日韩中文字幕在线高清| 日韩免费视频一区| 91丨九色丨国产在线| 99精品热视频| 特级黄色视频| 亚洲中文无码字幕| 黄色日逼| 一欧美日韩免费/看| 最新av资源| 起碰在线视频| 日韩香蕉网| 真人BBwBBWBBw另类视频| av网站在线免费观看| JLZZJLZZ亚洲女人| 人人看人人做| 久久免费精品视频| 亚洲无码在线播放| 三上悠亚一区二区| 久热中文在线观看精品视频| 人人摸人人爱人人操| 免费黄色视频网站在线观看| 色情一级AA片免费观看| 一区二区三区电影| 久操视频在线播放| 国产精品视频播放| 2025AV中文字幕| 亚韩在线| 久久另类TS人妖一区二区免费| 亚洲观看黄色网| 九九视频免费观看| 91狠狠色丁香婷婷综合久久| 在线无码免费观看| 黄色大片网站| 狠狠干,狠狠操| 国产精品欧美日韩| 极品少妇av| 精品日韩一区二区三区| 日韩欧美精品在线观看| 精品一区在线| 色婷婷av| 日韩中文字幕永久| 国产对白视频| 丰满人妻一区二区三区四区54| 久一视频| 四虎884| 国产激情久久| 亚洲日韩免费在线观看| 亚洲精品自拍视频| 99久久国产热无码精品免费| 亚洲成人综合网站| 黑人无码AV黑人天堂无码AV| 精品人妻中文字幕| 午夜成人福利视频在线观看| 大香蕉一本| 精品视频999| 美女黄色网| 国产一二三视频| 婷婷五月天丁香| 黄色18禁| 色综合色综合色综合| 欧美日韩成人一区二区三区 | 麻豆国产91| 欧一美一婬一伦一区二区三区自慰,| 黄色a视频| 日韩欧美中文字幕在线观看| www一个人免费观看视频www| 国产一区视频18| 成人做爰黄A片免费| 欧美日韩一二| 777久久| 成人影视亚洲| 91精品91久久久中77777| 蜜桃传媒一区二区亚洲A| A片在线观看免费| 亚洲成人网站在线| 亚洲精品乱码久久久久久按摩观| 山东乱子伦视频国产| 国产成人午夜高潮毛片| 成人毛片100免费观看| 99在线视频免费观看| 国产清纯可爱美女自卫裸贷偷情| 中文无码毛片| 99日韩精品| 91人人妻人人澡人人爽人人| 日本成人电影| 999国产精品视频| 免费在线观看一区| 久久久久久97| 伊人网视频在线| 不卡无码中文字幕一区| 欧美日韩一级二级三级| 曰曰摸日日碰| 午夜成人免费视频| 亚洲字幕| 国产一二| 国产高清无码在线观看视频| 黄色AV免费看| 成人视频在线免费观看| 俺也去色色| 99久久精品国产一区二区三区| 久久久久无码| 国产性爱网| 丁香六月婷婷激情| 日韩中文字幕在线人成网站| 99国产精品免费视频观看8| 成人h在线| 日韩无码不卡电影| 天堂网av2025| 激情av在线| 肏屄视频在线观看| 黄色免费毛片| 黄色工厂这里只有精品| 北条麻妃人妻中文无码| 外国成人视频| 99热官网| 黄色电影一级片| 三级网站在线播放| AA级黄色视频| 精品成人AV| 国产A片免费观看| 在线看片a| 日韩视频免费在线| 最新中文字幕在线观看视频 | 2019中文字幕在线| 欧美三级欧美三级三级| 99热在线观看免费| 东京热一区二区| 中文字幕免费一区| 欧美精品一卡二卡| 欧美午夜福利在线观看| 嫩草av在线| 日本高清久久| 在线天堂av| 大香蕉电影网| 先锋影音男人资源站| 国产精品三| 麻豆AV96熟妇人妻| 黄p网站| 欧美婬乱片A片AAA毛片地址| 黃色一级A一片人与| 欧美午夜片| 超碰人| 91精品导航| 欧美洲成人网站| 九九九视频在线观看| 久草网在线| 三级无码视频| 西欧超碰在线| 欧洲成人在线观看| 97超碰人人| 欧美日韩人妻高清中文| 欧美精品日韩| 日本在线免费| 国产3p露脸普通话对白| 九九香蕉视频| 九九热精品视频| 日韩干| 国产9熟妇视频网站| 午夜A片| 免费欧美成人网站| 无码一区二区在线观看| 日韩一区二区在线观看| 91人人妻人人妻人人澡| 青草青在线视频| 性色网站| 人妻国产| 91网站免费看| 91大神免费观看| 亚洲午夜无码久久久| 91欧美日韩综合| 欧美A视频在线观看| 色呦呦视频在线观看| 国产二级片| 久久婷婷婷| 日韩无码高清一区| 亚洲婷婷在线| 亚洲无码久久网| 欧美高潮喷水| 国产做爱导航| 翔田千里中文字幕无码| 国产三级网| 亚洲成人在线视频观看| 在线激情网站| 高清无码18| 亚洲中文字幕成人| 毛片毛片毛片毛片毛片毛片| 久久手机电影| 蜜桃av无码一区三区| 91成人视频18| 俺也去色色| 国产无码中文| 无码国产精品一区二区| 在线观看一区二区三区四区| 婷婷AV在线| 国产一级免费在线观看| 日韩在线视频免费播放| 99中文字幕| 亚洲精品高清视频| 少妇搡BBBB搡BBB搡造水爽| 免费看三级网站| 七六十路の高齢熟妇无码| 免费黄片网站|