A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© vipzh 中级黑马   /  2012-12-7 19:29  /  1536 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在java里面super有用吗,怎么样使用它啊?

4 个回复

倒序浏览
在Java类中使用super来引用父类的成分
super可用于访问父类中定义的属性
super可用于调用父类中定义的成员方法
super可用于在子类构造方法中调用父类的构造方法
super的追溯不仅限于直接父类
  1. public class Person {
  2.         private String name;
  3.             private int age;
  4.         public String getInfo() {
  5.                            return "Name: " + name + "\nage: " + age;
  6.             }
  7.    }

  8.    public class Student extends Person {
  9.             private String school = "New Oriental";
  10.         public String getSchool(){ return school; }
  11.             public String getInfo() {
  12.                           // 调用父类的方法
  13.                            return super.getInfo() +"\nschool: " +school;
  14.             }
  15.    }
复制代码

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
在一般方法中
最普遍的情况就是,在你的方法中的某个形参名与当前对象的某个成员有相同的名字,这时为了不至于混淆,你便需要明确使用this关键字来指明你要使用某个成员,使用方法是“this.成员名”,而不带this的那个便是形参。另外,还可以用“this.方法名”来引用当前对象的某个方法,但这时this就不是必须的了,你可以直接用方法名来访问那个方法,编译器会知道你要调用的是那一个。

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
(I)super关键字:super关键字与this关键字都可以实现将屏蔽的类成员为可见。
      子类调用父类的构造方法时,super语句必须是子类构造方法的第一句。
(II)成员被屏蔽的情况

(1)在同一个类中,局部变量与成员变量同名时,局部变量在方法内可见。
(2)子类继承父类,子类中的某个方法覆盖了父类的方法,在子类中父类方法为不可见。
(3)在子类中定义了与父类同名的成员变量,在子类中父类的成员变量为不可见。
(III)访问父类成员语法:
super.<父类成员变量/方法>

(IV)访问父类构造方法语法:
super(参数)

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
class Programmer implements Cloneable{   
  private String name;   //员工姓名
private  int age;     //员工年龄
  private double salary; //员工工资

/*构造方法*/
  Programmer(String name,int age,double salary)    {   
this.name=name;      
this.age=age;  
this.salary=salary;   
      }   

public Object clone()   throws  CloneNotSupportedException{      //定义克隆方法
Programmer  p=(Programmer)super.clone();        //确定要复制的对象
return p;   
}

public static void main(String[] args) {  
try {
Programmer p1=new Programmer("Kevin ",25,2000);
Programmer p2=(Programmer)p1.clone();
p2 .name=" Andy ";      //修改p2的员工姓名
p2.age=28; //修改p2的员工年龄
p2.salary=3000; //修改p2的员工工资
System.out.println("name="+p1.name+",age="+p1.age+",salary="+p1.salary);            
System.out.println("name="+p2.name+",age="+p2.age+",salary="+p2.salary);               
}  catch(CloneNotSupportedException e)       {      
System.out.println("CloneNotSupportedException异常"+e. getMessage());
e.printStackTrace();   
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马