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); } }
关于Java中this和super关键字的一些理解,代码中注释出都做了标注,也贴出了运行结果,希望对各位有用。