Chp6面向对象三大特性 第1题 考点:继承、this 和super 关键字

有以下代码

class Super{

public Super(){

System.out.println("Super()");

}

public Super(String str){

System.out.println("Super(String)");

}

}

class Sub extends Super{

public Sub(){

System.out.println("Sub()");

}

public Sub(int i){

this();

System.out.println("Sub(int)");

}

public Sub(String str){

super(str);

System.out.println("Sub(String)");

}

}

public class TestSuperSub{

public static void main(String args[]){

Sub s1 = new Sub();

Sub s2 = new Sub(10);

Sub s3 = new Sub("hello");

}

}

写出该程序运行的结果。

解:

package test1;
//考点:继承、this 和super 关键字
class Super {
	public Super() {
		System.out.println("Super()");
	}

	public Super(String str) {
		System.out.println("Super(String)");
	}
}
class Sub extends Super {
	public Sub() {
		System.out.println("Sub()");
	}

	public Sub(int i) {
		this();
		System.out.println("Sub(int)");
	}

	public Sub(String str) {
		super(str);
		System.out.println("Sub(String)");
	}
}
public class test1 {
	public static void main(String args[]) {
		Sub s1 = new Sub();
		//先找到13行的方法,再由于其中隐藏在最前面的super()去找父类的Super()方法即第4行代码,输出"Super()"
		//执行第14行,输出"Sub()"
		Sub s2 = new Sub(10);
		//先找到第17行的方法,之后走到第18行代码,找到第13行的方法,又循环了一遍s1,输出"Super()",输出"Sub()"
		//18行代码执行完毕后走第19行,"Sub(int)"
		Sub s3 = new Sub("hello");
		//找到第22行代码,走到第23行,跳到第8行,走到第9行,输出"Super(String)"
		//走到第24行,输出"Sub(String)"
	}
}

答案:Super()
Sub()
Super()
Sub()
Sub(int)
Super(String)
Sub(String)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值