Chinaunix首页 | 论坛 | 博客
  • 博客访问: 98893
  • 博文数量: 26
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 280
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-14 13:33
文章分类

全部博文(26)

文章存档

2008年(8)

2007年(18)

我的朋友

分类: Java

2007-04-28 16:15:51

super通常指代父类,如果在子类中需要引入父类的构造函数或某个方法,就需要使用super

它有两种用法

1)、在子类的构造函数中使用,用来调用父类的构造函数

使用super(参数列表)的形式调用父类的构造函数

super();  //调用父类的无参构造函数

super(name);//调用父类具有相同形参的构造函数

例: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方法,在子类中没有重新定义该方法,所有不需要使用//super.prt()来调用

prt("A chinese.");         

}

Chinese(String name)

{

super(name);//调用父类具有相同形参的构造函数

prt("his name is:"+name);

}

public static void main(String[] args)

{

Chinese cn=new Chinese();

cn=new Chinese("kevin");

}

}

注意:调用父类构造函数super()的语句必须放在其构造函数的第一行
2)、在其它非构造方法体内使用
super.父类的成员变量名 // 调用父类的成员变量
super.父类的方法名     // 调用父类的方法
Java中,有时会遇到子类中的成员变量或方法与父类(有时也称超类)中的成员变量或方法同名,因为子类中的成员变量或方法名优先级高,所以子类中的同名成员变量和方法就隐藏了父类的成员变量或方法,但是我们如果想要使用父类中的这个成员变量或方法,此使就需要用到super,请看下面的类。

class Country

{

      String name;

void value()

    {

        name="China";

    }

  }

  下面的子类中,子类的成员变量和方法隐藏了父类的成员变量name和方法value()

  class City extends Country

{

  String name;

    void value()

    {

        name="Hefei";

       super.value();  //调用父类的value()方法

       System.out.println(name);

       System.out.println(super.name);  // 调用父类的成员变量name

    }

    }

为了在子类中引用父类中的成员变量name和方法value(),在代码中我们使用了super.namesuper.value()

  所以显示的结果为

  Hefei

  China

阅读(902) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~