Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2321269
  • 博文数量: 252
  • 博客积分: 5472
  • 博客等级: 大校
  • 技术积分: 3107
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-17 18:39
文章分类

全部博文(252)

文章存档

2012年(96)

2011年(156)

分类: Java

2011-10-31 10:10:42

最好把super和this放在一起,对比着理解。 super指向父类,用于引用父类的构造方法。 this指向本类,用于引用本类中的其他方法。这么说太抽象,下边是一个很经典的例子,完全体现了super和this的用法和区别,请花几分钟把它读完:
  1. class Person {
  2.     public static void prt(String s) {
  3.        System.out.println(s);
  4.     }

  5.     Person() {
  6.        prt("A Person.");
  7.     }//构造方法(1)


  8.     Person(String name) {
  9.        prt("A person name is:" + name);
  10.     }//构造方法(2)

  11. }

  12. public class Chinese extends Person {
  13.     Chinese() {
  14.        super(); // 调用父类构造方法(1)

  15.        prt("A chinese.");// (4)

  16.     }

  17.     Chinese(String name) {
  18.        super(name);// 调用父类具有相同形参的构造方法(2)

  19.        prt("his name is:" + name);
  20.     }

  21.     Chinese(String name, int age) {
  22.        this(name);// 调用具有相同形参的构造方法(3)

  23.        prt("his age is:" + age);
  24.     }

  25.     public static void main(String[] args) {
  26.        Chinese cn = new Chinese();
  27.        cn = new Chinese("kevin");
  28.        cn = new Chinese("kevin", 22);
  29.     }
  30. }
执行结果为:
A Person.
A chinese.
A person name is:kevin
his name is:kevin
A person name is:kevin
his name is:kevin
his age is:22
下边总结一下super和this的异同: 1)super(参数):调用父类的构造方法 。 2)this(参数):调用本类的其他构造方法。 3)都必须放在构造方法的第一行。 3)super:引用父类中的成员,当子类和父类中的方法重名时,这样用。 4)this:代表当前对象名(在程序中易产生二义性之处,应使用this来指明当前对象;如果函数的形参与类中的成员数据同名,这时需用this来指明成员变量名)。 5)this()和super()都指的是对象,所以,均不能在static环境中使用。包括:static变量,static方法,static语句块。 6)从本质上讲,this是一个指向本对象的指针, 然而super是一个Java关键字。
阅读(1717) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~