欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中super和this的用法詳解

 更新時(shí)間:2020年08月21日 10:03:27   作者:sakura_inm  
這篇文章主要介紹了Java中super和this的用法詳解,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

super 用法
super關(guān)鍵字用來(lái)訪(fǎng)問(wèn)父類(lèi)內(nèi)容,具體用法可分為三種:
1.子類(lèi)的成員方法訪(fǎng)問(wèn)父類(lèi)的成員變量

public class Animal {
  public int age = 10;
}

class Dog extends Animal {
  public int age = 5;

  public void showAge() {
    System.out.println(super.age);
  }
}

2.子類(lèi)的成員方法訪(fǎng)問(wèn)父類(lèi)的成員方法

public class Animal {
  public void fn(){
    System.out.println("父類(lèi)Animal的方法");
  }
}

class Dog extends Animal {
  @Override
  public void fn() {
    super.fn();
    System.out.println("子類(lèi)Dog的方法");
  }
}

3.子類(lèi)的構(gòu)造方法訪(fǎng)問(wèn)父類(lèi)的構(gòu)造方法

public class Animal {
  public Animal() {
    System.out.println("父類(lèi)Animal的構(gòu)造方法");
  }
}

class Dog extends Animal {
  public Dog() {
    super();
    System.out.println("子類(lèi)Dog的構(gòu)造方法");
  }
}

this 用法
this關(guān)鍵字用來(lái)訪(fǎng)問(wèn)本類(lèi)內(nèi)容,具體用法可分為三種:
1.本類(lèi)的成員方法訪(fǎng)問(wèn)本類(lèi)的成員變量

public class Dog extends Animal {
  public int age = 1;

  public void showAge() {
    int age = 3;
    System.out.println(age);
    System.out.println(this.age);
  }
}

2.本類(lèi)的成員方法訪(fǎng)問(wèn)本類(lèi)的另一成員方法

public class Dog extends Animal {
  public int age = 1;

  public void showAge() {
    int age = 3;
    System.out.println(age);
    System.out.println(this.age);
  }

  public void fn() {
    this.showAge();
  }
}

3.本類(lèi)的構(gòu)造方法訪(fǎng)問(wèn)本類(lèi)的另一個(gè)構(gòu)造方法,此時(shí)this(…)調(diào)用必須放在這個(gè)構(gòu)造方法中的第一句,且只能使用一次

public class Dog extends Animal {
  public Dog() {
    this(2);
    System.out.println("無(wú)參構(gòu)造");
  }

  public Dog(int age) {
    System.out.println(age);
    System.out.println("有參構(gòu)造");
  }
}

super和this內(nèi)存圖解

在這里插入圖片描述

  • 方法區(qū)中存放包含主方法的Demo、父類(lèi)和子類(lèi)的class對(duì)象,編譯后在子類(lèi)的class對(duì)象中會(huì)有一個(gè)super_class標(biāo)記指向父類(lèi),表明二者的繼承關(guān)系
  • 主方法進(jìn)棧,執(zhí)行語(yǔ)句new一個(gè)子類(lèi)對(duì)象,棧中存放該對(duì)象的地址值,指向堆中開(kāi)辟的一塊用于存放該子類(lèi)對(duì)象的內(nèi)存,注意堆中子類(lèi)對(duì)象內(nèi)容還包括完整的父類(lèi)結(jié)構(gòu)
  • 主方法中執(zhí)行子類(lèi)的show方法,show方法進(jìn)棧,棧中存放show方法中的局部變量num,輸出局部變量num的值,接著輸出this.num,this指向子類(lèi)對(duì)象,this.num得到堆中子類(lèi)變量num的值,最后輸出super.num得到的是堆中存儲(chǔ)的父類(lèi)變量的值
  • 主方法執(zhí)行子類(lèi)的method方法,子類(lèi)method方法進(jìn)棧,子類(lèi)method方法中使用super.method()調(diào)用父類(lèi)的method方法,父類(lèi)的method方法進(jìn)棧

總結(jié)

到此這篇關(guān)于Java中super和this的用法的文章就介紹到這了,更多相關(guān)Java中super和this的用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • IDEA如何添加配置文件到classpath中

    IDEA如何添加配置文件到classpath中

    這篇文章主要介紹了IDEA如何添加配置文件到classpath中,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Mybatis入門(mén)指南之實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)增刪改查

    Mybatis入門(mén)指南之實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)增刪改查

    數(shù)據(jù)持久層主要負(fù)責(zé)數(shù)據(jù)的增、刪、改、查等功能,MyBatis 則是一款優(yōu)秀的持久層框架,下面這篇文章主要給大家介紹了關(guān)于Mybatis入門(mén)指南之實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)增刪改查的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • Java+opencv3.2.0之直方圖均衡詳解

    Java+opencv3.2.0之直方圖均衡詳解

    這篇文章主要為大家詳細(xì)介紹了Java+opencv3.2.0之直方圖均衡的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • JVM內(nèi)存結(jié)構(gòu)相關(guān)知識(shí)解析

    JVM內(nèi)存結(jié)構(gòu)相關(guān)知識(shí)解析

    這篇文章主要介紹了JVM內(nèi)存結(jié)構(gòu)相關(guān)知識(shí)解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Java中類(lèi)加載過(guò)程全面解析

    Java中類(lèi)加載過(guò)程全面解析

    這篇文章主要介紹了Java中類(lèi)加載過(guò)程全面解析,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • java 避免出現(xiàn)NullPointerException(空指針)的方法總結(jié)

    java 避免出現(xiàn)NullPointerException(空指針)的方法總結(jié)

    這篇文章主要介紹了java 避免出現(xiàn)NullPointerException(空指針)的方法總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2017-09-09
  • IDEA2022性能優(yōu)化的一些設(shè)置技巧

    IDEA2022性能優(yōu)化的一些設(shè)置技巧

    這篇文章主要介紹了IDEA2022性能優(yōu)化的一些設(shè)置,需要的朋友可以參考下
    2022-08-08
  • mybatis接口綁定失效的解決

    mybatis接口綁定失效的解決

    這篇文章主要介紹了mybatis接口綁定失效的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • ActiveMQ基于zookeeper的主從(levelDB Master/Slave)搭建

    ActiveMQ基于zookeeper的主從(levelDB Master/Slave)搭建

    這篇文章主要介紹了ActiveMQ基于zookeeper的主從levelDB Master/Slave搭建,以及Spring-boot下的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • java中的i++和++i的區(qū)別詳解

    java中的i++和++i的區(qū)別詳解

    這篇文章主要介紹了java中的i++和++i的區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08

最新評(píng)論