Java中的super及super与this的关系

关键字super的使用

super是指父类。 super关键字代表的是父类空间的引用。(并不能代表对象,只是代表一个对象中的一块内存而已)

super不能在static环境中使用。

使用super访问父类的域和方法

super访问隐藏的成员变量:

子类的成员变量与父类同名,此时父类的成员变量被覆盖。

class A{
	int a;
	int a1;
}
class B extends A{
	int a;//与父类的成员变量名相同,属于变量隐藏现象。
	void show(){
	System.out.println("a="+a); //此处a是B中的a
	System.out.println("super.a="+super.a); //此处a是A中的a
	}
}

super调用父类同名方法时:

当子类覆盖父类的同名方法时,要调用父类的方法,就必须使用super。

void sayHello(){
	super.sayHello();
	System.out.println("子类sayHello()方法被调用");
}
使用super调用父类的构造方法

调用无参父类构造函数时:

  1. 隐式调用父类的无参构造方法

    隐式,就是不将调用过程写出来。也就是说,我什么也不写,程序会默认的去调用父类的

  2. 显示用super()写出调用

class A{
	A(){ System.out.println("我是父类的无参构造函数");   }
}
class B extends A{
	B(){
		//super();   // 注释掉即为隐式
		System.out.println("我是子类的无参构造函数");
	}
}

每个子类构造方法的第一条语句,都是隐含地调用super()

调用父类的含参构造方法

class Person{
	String name;
	int age;
	Person(String name,int age){}
}
class Student extends Person{
	String name;
	int age;
	String school;
	Student(String name,int age,String school){
		super(name,age);//有参数时显式调用,super()语句必须写在第一行
		this.school=school;
	}
}

如果某个类的构造方法的第一句是用this()来调用本类的另外一个构造方法,那么Java系统就不会默认用这个构造方法调用父类的构造方法。


super与this

super调用的是父类构造函数,this调用的是本类构造函数。
super与this都需要放在构造器第一行
点:https://blog.csdn.net/qq_40764966/article/details/99679555

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值