亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java面向?qū)ο缶幊讨惖睦^承詳解

 更新時(shí)間:2018年02月02日 11:45:06   作者:畢加索的ma  
這篇文章主要介紹了Java面向?qū)ο缶幊讨惖睦^承,結(jié)合實(shí)例形式較為詳細(xì)的分析了Java面向?qū)ο缶幊填惖母拍睢⒐δ?、使用方法及相關(guān)注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了Java面向?qū)ο缶幊讨惖睦^承。分享給大家供大家參考,具體如下:

繼承:特殊類擁有一般類的全部屬性與行為。

繼承好處:

1.提高了代碼的復(fù)用性

2.讓類與類之前產(chǎn)生了關(guān)系,有了這個(gè)關(guān)系才有多態(tài)的特性。繼承是類和類之前的關(guān)系。

注意事項(xiàng):

1.java只支持單繼承,不支持多繼承。因?yàn)槎嗬^承有安全隱患:當(dāng)多個(gè)父類定義相同的函數(shù),但是功能不同時(shí),子類不知道運(yùn)行哪一個(gè)。

2.子類繼承父類時(shí),繼承了父類的所有方法和屬性,可直接使用。

3,java支持多層繼承,即:孫-子-父的關(guān)系

語(yǔ)法:

[類修飾符] class 子類名 extends 父類名{
  語(yǔ)句;
}

例如:

class Pserson
{
  int age;
  String name;
  public void speak()
  {
    System.out.println("Hello World!");
  }
}
//繼承Person類,繼承了父類所有方法和屬性
class Student extends Pserson
{
  public void study()
  {
    System.out.println("Good Study!");
  }
}
//繼承Person類,繼承了父類所有方法和屬性
class Worker extends Pserson
{
  public void work()
  {
    System.out.println("Good work!");
  }
}

如何使用一個(gè)繼承體系中的功能(查閱api文檔):

查閱父類的功能,創(chuàng)建子類對(duì)象使用功能

在繼承過程中經(jīng)常遇到這三種場(chǎng)景:

1)同名變量

1.如果子類出現(xiàn)非私有的同名成員變量時(shí),子類訪問本類的變量,用this;子類訪問父類中的同名變量,用super。
2.this代表本類對(duì)象的引用
3.super代表父類對(duì)象的引用(用法和this相同)

2)同名函數(shù)

1.如果子類出現(xiàn)和父類一模一樣的函數(shù)時(shí)(函數(shù)名和參數(shù)都相同),當(dāng)子類對(duì)象調(diào)用該函數(shù),會(huì)運(yùn)行子類函數(shù)內(nèi)容。,父類的函數(shù)會(huì)被覆蓋(也叫重寫)。

2.重寫定義:當(dāng)子類繼承父類,沿襲了父類的功能,到子類中。但子類雖具備該功能,但功能的內(nèi)容和父類不一致,這時(shí),沒有必須要定義新功能,而是使用覆蓋特性,保留父類的功能定義,并重寫功能內(nèi)容。

3.重寫(覆蓋)注意事項(xiàng):

<1>子類覆蓋父類,必須保證子類的權(quán)限大于等于父類的權(quán)限,才能繼承,否則編譯失敗。(public>不寫修辭關(guān)鍵詞>private)
<2>靜態(tài)只能覆蓋靜態(tài)
<3>重載:只看同名函數(shù)的參數(shù)列表 重寫:子父類方法要一模一樣(函數(shù)名和參數(shù)列表)

class Fu
{
  //public void show()  當(dāng)父類為show()時(shí),會(huì)和子類函數(shù)一模一樣,父類的show函數(shù)會(huì)被重寫
  public void show(String name) //父類的show函數(shù)和子類不一樣(參數(shù)列表不一樣),因此父類的show函數(shù)不會(huì)被重寫
  {
    System.out.println(name);
  }
}
class Zi extends Fu
{
  public void show()
  {
    System.out.println("zi");
  }
}
class Jicheng
{
  public static void main(String[] args)
  {
    Zi z1=new Zi();
    z1.show("nihao");//會(huì)調(diào)用父類的show函數(shù)
  }
}

3)構(gòu)造函數(shù)

1.在對(duì)子類對(duì)象進(jìn)行初始化時(shí),父類的構(gòu)造函數(shù)也會(huì)運(yùn)行,因?yàn)樽宇惖臉?gòu)造函數(shù)的第一行默認(rèn)有一條隱式語(yǔ)句super()

2.super()會(huì)訪問父類中空參數(shù)的構(gòu)造函數(shù),而且子類中所有的構(gòu)造函數(shù)第一行默認(rèn)都是super()

3.子類一定要訪問父類構(gòu)造函數(shù)原因

<1>因?yàn)楦割愔械臄?shù)據(jù)子類可以直接獲取,所以子類在創(chuàng)建是,先看看父類如何對(duì)這些數(shù)據(jù)進(jìn)行初始化的,所以子類在對(duì)象初始化時(shí),默認(rèn)先訪問父類的構(gòu)造函數(shù)。
<2>若要訪問父類制定的構(gòu)造函數(shù)或者父類沒有空參數(shù)的構(gòu)造函數(shù)時(shí),可以通過手動(dòng)定義super語(yǔ)句的方式來(lái)制定。
<3>當(dāng)然子類的構(gòu)造函數(shù)第一行也可以手動(dòng)指定this語(yǔ)句來(lái)訪問本類的構(gòu)造函數(shù),但子類中至少有一個(gè)構(gòu)造函數(shù)會(huì)訪問父類的構(gòu)造函數(shù)

class Fu
{
  String name;
  int age;
  Fu(){System.out.println("Hello Fu");}
  Fu(String name)
  {
    System.out.println(name);
  }
  Fu(String name,int age)
  {
    this.name=name;
    this.age=age;
    System.out.println("name: "+name+",age: "+age);
  }
}
class Zi extends Fu
{
  //Zi(){System.out.println("Hello Zi");}  默認(rèn)先會(huì)調(diào)用父類的無(wú)參構(gòu)造函數(shù)
  Zi()
  {
    super("zhangsan",20);//手動(dòng)用super語(yǔ)句指定父類的構(gòu)造函數(shù),來(lái)獲取父類非私有的信息
    System.out.println(name+"::"+age);
  }
}
class Test
{
  public static void main(String[] args)
  {
    Zi z1=new Zi();
  }
}

構(gòu)造函數(shù)異常例子:

寫出程序結(jié)果

class Super
{
  int i=0;
  public Super(String s)
  {
    i=1;
  }
}
class Demo extends Super
{
  public Demo(String s)
  {
    i=2;
  }
  public static void main(String[] args)
  {
    Demo d=new Demo("yes");
    System.out.println(d.i);
  }
}
//編譯失敗,因?yàn)楦割愔腥鄙倏諈?shù)的構(gòu)造函數(shù)。
//或者子類應(yīng)該通過super語(yǔ)句指定要調(diào)用的父類中的構(gòu)造函數(shù)。

重寫和重載例子:

class Demo
{
   int show(int a,int b){return 0;}
}

下面那些函數(shù)可以存在于Demo的子類中。

A.public int show(int a,int b){return 0;}//可以,覆蓋。
B.private int show(int a,int b){return 0;}//不可以,權(quán)限不夠。
C.private int show(int a,long b){return 0;}//可以,和父類不是一個(gè)函數(shù)。沒有覆蓋,相當(dāng)于重載。
D.public short show(int a,int b){return 0;}//不可以,因?yàn)樵摵瘮?shù)不可以和給定函數(shù)出現(xiàn)在同一類中,或者子父類中。
E.static int show(int a,int b){return 0;}//不可以,靜態(tài)只能覆蓋靜態(tài)。<br><br>因此子類允許重寫和重載。

更多java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java面向?qū)ο蟪绦蛟O(shè)計(jì)入門與進(jìn)階教程》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 在IntelliJ IDEA中為自己設(shè)計(jì)的類庫(kù)生成JavaDoc的方法示例

    在IntelliJ IDEA中為自己設(shè)計(jì)的類庫(kù)生成JavaDoc的方法示例

    這篇文章主要介紹了在IntelliJ IDEA中為自己設(shè)計(jì)的類庫(kù)生成JavaDoc的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Spring超詳細(xì)講解事務(wù)

    Spring超詳細(xì)講解事務(wù)

    Spring事務(wù)的本質(zhì)就是對(duì)數(shù)據(jù)庫(kù)事務(wù)的支持,沒有數(shù)據(jù)庫(kù)事務(wù),Spring是無(wú)法提供事務(wù)功能的。Spring只提供統(tǒng)一的事務(wù)管理接口,具體實(shí)現(xiàn)都是由數(shù)據(jù)庫(kù)自己實(shí)現(xiàn)的,Spring會(huì)在事務(wù)開始時(shí),根據(jù)當(dāng)前設(shè)置的隔離級(jí)別,調(diào)整數(shù)據(jù)庫(kù)的隔離級(jí)別,由此保持一致
    2022-07-07
  • 如何使用Java 8 中的 Stream 遍歷樹形結(jié)構(gòu)

    如何使用Java 8 中的 Stream 遍歷樹形結(jié)構(gòu)

    這篇文章主要介紹了使用Java 8中的Stream遍歷樹形結(jié)構(gòu),我們可以使用Java8中的Stream流一次性把數(shù)據(jù)查出來(lái),然后通過流式處理,我們一起來(lái)看看,代碼實(shí)現(xiàn)為了實(shí)現(xiàn)簡(jiǎn)單,就模擬查看數(shù)據(jù)庫(kù)所有數(shù)據(jù)到List里面,需要的朋友可以參考下
    2023-08-08
  • SpringBoot整合阿里云短信服務(wù)的方法

    SpringBoot整合阿里云短信服務(wù)的方法

    在實(shí)際項(xiàng)目中經(jīng)常有發(fā)送短信的功能,今天進(jìn)說一下SpringBoot整合阿里云短信服務(wù)的相關(guān)知識(shí),新建短信微服務(wù),編寫發(fā)送短信接口的方法文中給大家介紹的很詳細(xì),需要的朋友參考下吧
    2021-10-10
  • 通過字節(jié)碼看java中this的隱式傳參詳解

    通過字節(jié)碼看java中this的隱式傳參詳解

    這篇文章主要給大家介紹了關(guān)于如何通過字節(jié)碼看java中this的隱式傳參的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • Spring Boot集成netty實(shí)現(xiàn)客戶端服務(wù)端交互示例詳解

    Spring Boot集成netty實(shí)現(xiàn)客戶端服務(wù)端交互示例詳解

    這篇文章主要給大家介紹了關(guān)于Spring Boot集成netty實(shí)現(xiàn)客戶端服務(wù)端交互的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • 利用java、js或mysql計(jì)算高德地圖中兩坐標(biāo)之間的距離

    利用java、js或mysql計(jì)算高德地圖中兩坐標(biāo)之間的距離

    最近因?yàn)楣ぷ鞯男枨?,需要?jì)算出高德地圖中兩個(gè)坐標(biāo)的距離,通過查找相關(guān)資料發(fā)現(xiàn)了多種實(shí)現(xiàn)的方法,下面這篇文章主要給大家介紹了關(guān)于利用java、js或mysql計(jì)算高德地圖中兩坐標(biāo)之間距離的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。
    2017-10-10
  • java中獲取當(dāng)前服務(wù)器的Ip地址的方法

    java中獲取當(dāng)前服務(wù)器的Ip地址的方法

    本篇文章主要介紹了java中獲取當(dāng)前服務(wù)器的Ip地址的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2017-02-02
  • java實(shí)現(xiàn)斗地主發(fā)牌功能

    java實(shí)現(xiàn)斗地主發(fā)牌功能

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)斗地主發(fā)牌功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • GC調(diào)優(yōu)實(shí)戰(zhàn)之高分配速率High?Allocation?Rate

    GC調(diào)優(yōu)實(shí)戰(zhàn)之高分配速率High?Allocation?Rate

    這篇文章主要為大家介紹了GC調(diào)優(yōu)之高分配速率High?Allocation?Rate的實(shí)戰(zhàn)示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-01-01

最新評(píng)論