super和this关键字

一、super关键字的应用场景

1.    访问父类的成员变量

2.    访问父类的构造函数

3.    访问父类的方法

二、super关键字的使用

class Animal {
protected String name;    //注意:若限定符是private,子类无法使用super关键字访问父类成员变量

protected int id;

public Animal(String name, int id) {
this.name = name;    //参数与成员变量同名,成员变量被覆盖,用this访问成员变量
this.id = id;
}
public Animal(){
this("未知",0);    //默认不带参数的构造方法,this调用另一个构造方法,若没有别的构造方法,会报错
}
public void eat() {
System.out.println(name + ":正在吃" + "  id:" + id);
}
public void sleep() {
System.out.println(name + ":正在睡" + "  id:" + id);
}
public void introduction() {
System.out.println("大家好我是:" + name + "  id:" + id);
}
}
class Penguin extends Animal {
private String sex;
public Penguin(String name, int id, String sex) {
super(name, id);    //super访问父类构造函数
this.sex = sex;
}
public void sleep(){
super.sleep();    //super访问父类方法
System.out.println(name + ":正在睡" + "  id:" + id + "  性别:" + sex);
}
}


class Mouse extends Animal{
private String sex;
public Mouse(String name, int id, String sex){
super(name,id);     //super访问父类构造函数,只能放到第一行
this.sex = sex;

}

public void introduction(){
System.out.println("大家好我是:" + super.name + "  id:" + super.id + "  性别:" + sex);
}    //super访问父类成员变量,注意父类成员变量限定符。
}
public class ExtendsTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Penguin p1 = new Penguin("Tonny", 1000, "帅哥");
Mouse p2 = new Mouse("Juny", 1001, "美女");
p1.eat();
p2.sleep();
p1.introduction();
p2.introduction();
p1.sleep();
}

}

输出结果:

Tonny:正在吃  id:1000
Juny:正在睡  id:1001
大家好我是:Tonny  id:1000
大家好我是:Juny  id:1001  性别:美女
Tonny:正在睡  id:1000

Tonny:正在睡  id:1000  性别:帅哥

三、总结

问题一:

如果开发者自定义了一个类,没有显示的进行类的继承,那么该类中成员函数是否可以使用super关健健字?

答:可以,每个类都继承了超类Object,此时super访问的是Object类。

注意:super访问父类构造函数,只能放到第一行

子类使用super关键字访问父类非private的成员变量,构造函数,方法。

四、参考资料
this和super用法参考如下博客:

http://blog.51cto.com/lavasoft/18886

《JAVA编程思想》


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值