java学习(八)--super关键字

感觉实际工作中自己很少去使用super关键字写程序,所以对它的理解也不深。通常看的时候会去查查啥意思,但过段时间就立马忘记了,所以有段时间对super这个关键字产生了恐惧心理。这次写了几个例子,来加深对super关键字的理解。

super主要是用在以下三个方面

1.在子类的构造方法中,调用父类的构造方法。

这是java默认的,即使不写子类的构造方法,也同样会去执行父类构造方法。当然如果父类的构造方法也省略不写,则程序上不会输出任何结果。

2.在子类的成员方法中,调用父类的成员变量。

3.在子类的成员方法中,调用父类的成员方法。

可以根据下面的程序对上述三条进行理解和对比。

先定义一个父类

package superDemo;

public class Father {

	String name="父类";

	public Father(){
		System.out.println("父类的构造方法");
	}

	public void show() {
		System.out.println("这是一个父类");
	}
}

再定义一个子类

package superDemo;

public class Son extends Father {
	String name = "子类";

	// 子类的构造方法
	// 实际上,构造方法是自带的,并且默认不显示。
	// 而如果该类继承了其他类,则该类的构造方法中,也自动添加了super()方法
	public Son() {
		//遇到super关键字,会先去执行父类的构造方法
		super();
		//执行完父类的构造方法后,再继续执行后面的语句
		System.out.println("这是子类的构造方法");
	}

	public static void main(String[] args) {
		//第一步:程序进入main方法后,先创建对象,对象创建完毕后,立即执行构造方法public Son()
		Son son = new Son();
		//第二步:执行完构造方法后,继续执行以下代码
		son.showSon();
		// 需要注意以下情况 在static关键字定义的方法里,不能直接用super调用父类方法。
		// super.show(); 这是一个错误写法
	}

	// 注意 此时的方法不能为静态static类型,否则程序将报错,具体原因可以参照静态部分的知识。
	public void showSon() {
		// 子类显示自己的名字
		System.out.println("显示子类的名字:" + name);
		// 子类用super显示父类的名字
		System.out.println("显示父类的名字:" + super.name);
		// 子类用super显示父类的方法
		super.show();
	}

}

执行结果如下

父类的构造方法
这是子类的构造方法
显示子类的名字:子类
显示父类的名字:父类
这是一个父类

需要注意的是static和super这两个关键字,可谓水火不相容。在static方法体里,绝对不允许出现super调用的各种父类方法或父类变量。这一部分可以参考静态知识总结

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值