java关键字this、super的用法

来源:互联网 发布:mac口红官网价格多少 编辑:程序博客网 时间:2024/06/05 23:39

(1)this关键字的用法

1、通过this.成员变量或this.成员方法来调用当前对象的成员变量或成员方法

public class DemoThis
{
  private String name;
  private int age;
  DemoThis(String name,int age)
  { 
    setName(name);
    //你可以加上this来调用方法,像这样:this.setName(name);但这并不是必须的 
    setAge(age); 
    this.print();
  }  
  public void setName(String name)
  { 
    this.name=name;//此处必须指明你要引用成员变量
  }
  public void setAge(int age)
  { 
    this.age=age; //此处必须指明你要引用成员变量
  }
  public void print()
  { 
    System.out.println("Name="+name+" age="+age);
    //在此行中并不需要用this,因为没有会导致混淆的东西
  }
  public static void main(String[] args)
  { 
    DemoThis dt=new DemoThis("Kevin",22);
    dt.print();
  }
}

2、通过this(参数)来调用当前对象具有相同参数的构造函数

public class DemoThis
{
  public DemoThis()
  {
    System.out.println("缺省构造函数"); 
  } 
  public DemoThis(String str)
  {
    this();
    System.out.println("带一个参数的构造函数"); 
  }
  public static void main(String args[])
  {
    DemoThis dt=new DemoThis("123"); 
  }
}

(2)super关键字的用法

1、通过super.成员变量或super.成员方法显示得调用父类的成员变量或成员方法

public class Father
{
   public void show()
   {
     System.out.println("这是父类的show方法"); 
   }
   public static void main(String args[])
    {
      Child c=new Child();
      c.show(); 
    }
}

class Child extends Father
{
  public void show()
  {
   super.show();
    System.out.println("这是子类的show方法"); 
  } 
}

 

2、通过super(参数)调用父类具有相同参数的构造函数

class Person
{
  public static void prt(String s)
  { 
    System.out.println(s);
  }
  Person()
  { 
    prt("A Person.");
  }
  Person(String name)
  {
   prt("A person name is:"+name);
  }
}
public class Chinese extends Person
{
  Chinese()
  { 
    super(); //调用父类构造函数
    prt("A chinese.");
  }
  Chinese(String name)
  { 
    super(name);//调用父类具有相同形参的构造函数
    prt("A chinese name is:"+name);
  }
  Chinese(String name,int age){ 
    this(name);//调用当前具有相同形参的构造函数
    prt("A chinese age is:"+age);
  }
  public static void main(String[] args){ 
    Chinese cn=new Chinese(); 
    cn=new Chinese("kevin"); 
    cn=new Chinese("kevin",22);
  }
}

0 0