package com.cn.This;
/**
 * this与super的区别:
 * 1.this相当于指向本类的对象的指针,调用本类的另一种类型的构造方法
 * 2.super调用的是父类中形参相同的构造方法
 * 3.两者都需要放在构造方法内的第一行
 * 4.两者不能同时出现在一个构造函数中,因为this必然会调用其他的构造函数,进而会产生两个super
 * 5.两者都指对象,所以不能在含有static的环境中使用
 * @author P0111220
 *
 */
class Person{
    public void pro(String msg) {
        System.out.println(msg);
    }
    public Person() {
        // TODO Auto-generated constructor stub
        pro("父类的无参构造方法!!");
    }
    public Person(String mString){
        pro("父类含一个参数的构造方法:"+mString);
    }
}
class Chinese extends Person{
    public Chinese() {
        // TODO Auto-generated constructor stub
        super();//调用父类的构造方法
        pro("调用父类的无参构造方法");
    }
    public Chinese(String name){
        super(name);//形参相同指的是参数类型相同,参数名可以随便
        pro("调用父类相同形参类型的方法:"+name);
    }
    
    public Chinese(String name,int age){
        this(name);//相当于指向本类中另一种类型的构造方法
        pro("age:"+age);
    }
}
public class ThisSuperTest {
    public static void main(String[] args) {
        Chinese chinese= new Chinese();
        chinese = new Chinese("狗子");
        chinese = new Chinese("狗子",12);
    }
}

View Code

关于Java中this和super关键字的一些理解,代码中注释出都做了标注,也贴出了运行结果,希望对各位有用。

版权声明:本文为ThornyRoser原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/ThornyRoser/p/8674868.html