Java中super的用法並與this的區別(轉載)

一.子類中若是須要調用父類中的構造函數,則須要使用super(),且必須在構造函數中的第一行

public class Demo1 {
    public static void main(String[] args) {
        Sub sub=new Sub();
    }
}

class Base {
    public Base() {
        System.out.println("Base");
    }
}

class Sub extends Base {
    public Sub() {
        //調用父類的構造方法,必須爲第一行
        super();
        System.out.println("Sub");
    }
}

運行結果:函數

Base
Subthis

二.用super訪問父類中被隱藏的成員變量或方法

有時會遇到子類中的成員變量或方法與父類中的成員變量或方法同名。由於子類中的成員變量或方法名優先級高,因此子類中的同名成員變量或方法就隱藏了父類的成員變量或方法,可是咱們若是想要使用父類中的這個成員變量或方法,就須要用到super.spa

public class Demo2 {
    public static void main(String[] args) {
        City city=new City();
        city.setName();
    }
}

class Country {
    String name;
    
    void setName() {
        name="China";
    }
}

class City extends Country {
    String name;
    
    void setName() {
        name="nanjing";
        //調用父類的成員方法
        super.setName();
        System.out.println(name);
        //調用父類的成員變量
        System.out.println(super.name);
    }
}

運行結果:.net

nanjing
Chinacode

三.用super直接傳遞參數

public class Demo3 {
    public static void main(String[] args) {
        Chinese ch=new Chinese();
        ch=new Chinese("小明");
        ch=new Chinese("小花",22);
    }
}

class Person {
    //靜態方法
    public static void show(String s) {
        System.out.println(s);
    }
    
    public Person() {
        show("A Person");
    }
    
    public Person(String name) {
        show("A person name is: "+name);
    }
}

class Chinese extends Person {
    public Chinese() {
        //調用父類的構造方法
        super();
        show("A chinese");
    }
    
    public Chinese(String name) {
        //調用父類具備相同形參的構造方法
        super(name);
        show("his name is:" +name);
    }
    
    public Chinese(String name, int age) {
        //調用本類具備相同形參的構造方法
        this(name);
        show("his age is:"+age);
    }
}

運行結果:blog

A Person
A chinese
A person name is: 小明
his name is:小明
A person name is: 小花
his name is:小花
his age is:22ci

四.super與this的異同

 

注:本文轉載自http://blog.csdn.net/anmei2010/article/details/4093118it

相關文章
相關標籤/搜索