super关键字

一、super限定

super限定:与this引用非常相似,super用于限定访问父类定义的实例变量或实例方法。

  • super.父类定义的实例变量
  • super.父类定义的实例方法(形参)
class Base
{
	int age = 20;
	public void foo(String name)
	{
		System.out.println("执行foo方法,传入参数为:"+name);
	}
}
class Sub extends Base
{
	int age = 200;
	@override
	public void foo(String name)
	{
		System.out.println("执行子类重写foo方法,传入参数为:"+name);
	}
	public void test()
	{
		int age = 2; //局部变量
		System.out.println(age); //2
		System.out.println(this.age); //200
		//super限定访问父类中的实例变量
		System.out.println(super.age); //20
		foo("aa");//执行子类重写foo方法,传入参数为:aa
		//super限定访问父类中的实例方法
		super.foo("aa");//执行foo方法,传入参数为:aa
		
	}
}
public class
{	
	public static void main(String[] args)
	{
		Sub s = new Sub();
		s.test();
	}
}

二、super调用

  • 子类构造器必须调用一次父类的构造器:有且仅有一次
    (1) 如果子类构造器没有显示调用父类构造器,系统会自动在子类构造器的第一行先调用父类无参数的构造器。
    (2)子类构造器的第一行显式使用super调用来调用父类构造器。

super限定:super后紧跟一个.
super调用:super后紧跟(参数)

  • super调用和this调用:
    –super调用一定是调用父类的构造器。只能出现在构造器的第一行。
    –this调用是调用当前类的构造器。只能出现在构造器的第一行。
    –super调用和this调用不能同时出现

☆☆☆如果父类没有无参的构造器,子类的构造器必须显式调用(super调用)父类指定的构造器。

class Fruit
{
	private double weight;
	public Fruit(double weight)
	{
		this.weight = weight;
	}
}
public class Apple extends Fruit
{
	public Apple
	{
		//如果没有super调用,默认调用父类无参数的构造器
		//super("aa");//尝试调用(String)构造器
		super(0.0);//尝试调用(double)构造器
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值