最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java面向對象編程之類的繼承詳解

 更新時間:2018年02月02日 11:45:06   作者:畢加索的ma  
這篇文章主要介紹了Java面向對象編程之類的繼承,結合實例形式較為詳細的分析了Java面向對象編程類的概念、功能、使用方法及相關注意事項,需要的朋友可以參考下

本文實例講述了Java面向對象編程之類的繼承。分享給大家供大家參考,具體如下:

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

繼承好處:

1.提高了代碼的復用性

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

注意事項:

1.java只支持單繼承,不支持多繼承。因為多繼承有安全隱患:當多個父類定義相同的函數(shù),但是功能不同時,子類不知道運行哪一個。

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

3,java支持多層繼承,即:孫-子-父的關系

語法:

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

例如:

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!");
  }
}

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

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

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

1)同名變量

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

2)同名函數(shù)

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

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

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

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

class Fu
{
  //public void show()  當父類為show()時,會和子類函數(shù)一模一樣,父類的show函數(shù)會被重寫
  public void show(String name) //父類的show函數(shù)和子類不一樣(參數(shù)列表不一樣),因此父類的show函數(shù)不會被重寫
  {
    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");//會調(diào)用父類的show函數(shù)
  }
}

3)構造函數(shù)

1.在對子類對象進行初始化時,父類的構造函數(shù)也會運行,因為子類的構造函數(shù)的第一行默認有一條隱式語句super()

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

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

<1>因為父類中的數(shù)據(jù)子類可以直接獲取,所以子類在創(chuàng)建是,先看看父類如何對這些數(shù)據(jù)進行初始化的,所以子類在對象初始化時,默認先訪問父類的構造函數(shù)。
<2>若要訪問父類制定的構造函數(shù)或者父類沒有空參數(shù)的構造函數(shù)時,可以通過手動定義super語句的方式來制定。
<3>當然子類的構造函數(shù)第一行也可以手動指定this語句來訪問本類的構造函數(shù),但子類中至少有一個構造函數(shù)會訪問父類的構造函數(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");}  默認先會調(diào)用父類的無參構造函數(shù)
  Zi()
  {
    super("zhangsan",20);//手動用super語句指定父類的構造函數(shù),來獲取父類非私有的信息
    System.out.println(name+"::"+age);
  }
}
class Test
{
  public static void main(String[] args)
  {
    Zi z1=new Zi();
  }
}

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

寫出程序結果

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);
  }
}
//編譯失敗,因為父類中缺少空參數(shù)的構造函數(shù)。
//或者子類應該通過super語句指定要調(diào)用的父類中的構造函數(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;}//不可以,權限不夠。
C.private int show(int a,long b){return 0;}//可以,和父類不是一個函數(shù)。沒有覆蓋,相當于重載。
D.public short show(int a,int b){return 0;}//不可以,因為該函數(shù)不可以和給定函數(shù)出現(xiàn)在同一類中,或者子父類中。
E.static int show(int a,int b){return 0;}//不可以,靜態(tài)只能覆蓋靜態(tài)。<br><br>因此子類允許重寫和重載。

更多java相關內(nèi)容感興趣的讀者可查看本站專題:《Java面向對象程序設計入門與進階教程》、《Java數(shù)據(jù)結構與算法教程》、《Java操作DOM節(jié)點技巧總結》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

希望本文所述對大家java程序設計有所幫助。

相關文章

  • Myeclipse清理項目緩存的幾大方法

    Myeclipse清理項目緩存的幾大方法

    今天小編就為大家分享一篇關于Myeclipse清理項目緩存的幾大方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • 詳解Java集合類之List篇

    詳解Java集合類之List篇

    這篇文章主要為大家詳細介紹一下Java集合類中List的用法,文中的示例代碼講解詳細,對我們學習Java有一定幫助,感興趣的可以了解一下
    2022-07-07
  • 聊聊@RequestMapping和@GetMapping @PostMapping的區(qū)別

    聊聊@RequestMapping和@GetMapping @PostMapping的區(qū)別

    這篇文章主要介紹了@RequestMapping和@GetMapping及@PostMapping的區(qū)別,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • SpringBoot集成Access?DB實現(xiàn)數(shù)據(jù)導入和解析

    SpringBoot集成Access?DB實現(xiàn)數(shù)據(jù)導入和解析

    microsoft?office?access是由微軟發(fā)布的關聯(lián)式數(shù)據(jù)庫管理系統(tǒng),它結合了?microsoft?jet?database?engine?和?圖形用戶界面兩項特點,是一種關系數(shù)據(jù)庫工具,本文給大家介紹了SpringBoot集成Access?DB實現(xiàn)數(shù)據(jù)導入和解析,需要的朋友可以參考下
    2024-11-11
  • SpringBoot使用Prometheus實現(xiàn)監(jiān)控

    SpringBoot使用Prometheus實現(xiàn)監(jiān)控

    在當今的軟件開發(fā)世界中,監(jiān)控是至關重要的一部分,本文主要介紹了如何在Spring Boot應用程序中使用Prometheus進行監(jiān)控,以幫助大家更好地理解和管理您的應用程序,有需要的可以參考下
    2023-10-10
  • Java 通過AQS實現(xiàn)數(shù)據(jù)組織

    Java 通過AQS實現(xiàn)數(shù)據(jù)組織

    這篇文章主要介紹了通過AQS實現(xiàn)數(shù)據(jù)組織,想了解AQS的同學可以參考下
    2021-04-04
  • Java多線程讀寫鎖ReentrantReadWriteLock類詳解

    Java多線程讀寫鎖ReentrantReadWriteLock類詳解

    本文詳細講解了Java多線程讀寫鎖ReentrantReadWriteLock類,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-12-12
  • 基于Java SSM實現(xiàn)Excel數(shù)據(jù)批量導入

    基于Java SSM實現(xiàn)Excel數(shù)據(jù)批量導入

    這篇文章主要為大家詳細介紹了基于Java SSM如何實現(xiàn)excel數(shù)據(jù)批量導入,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 消息隊列 RabbitMQ 與 Spring 整合使用的實例代碼

    消息隊列 RabbitMQ 與 Spring 整合使用的實例代碼

    本篇文章主要介紹了消息隊列 RabbitMQ 與 Spring 整合使用的實例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • 2021年最新Redis面試題匯總(4)

    2021年最新Redis面試題匯總(4)

    在程序員面試過程中redis相關的知識是常被問到的話題。這篇文章主要介紹了幾道Redis面試題,整理一下分享給大家,感興趣的小伙伴們可以參考一下
    2021-07-07

最新評論

乌兰县| 临夏县| 根河市| 马尔康县| 连南| 抚顺市| 洪雅县| 茌平县| 松原市| 晋州市| 兴和县| 合川市| 阜阳市| 万宁市| 鹰潭市| 昭通市| 无极县| 江陵县| 磐石市| 南召县| 佛学| 郎溪县| 邹城市| 仪陇县| 读书| 十堰市| 兴国县| 阳朔县| 凤山县| 威信县| 读书| 汉源县| 荆州市| 博客| 巫山县| 神农架林区| 崇阳县| 昌黎县| 庆阳市| 五大连池市| 东乡县|