java继承中super关键字的用法

今晚复习了下java继承类super关键字的用法,看了一个例题,看似简单其实特别容易错,笔试题经常出现这种类型的题,下面来分享下此类题:

package study;
class Base{
	public String name;
	public Base(){
		name="jack";
	}
	public Base(String pName){
		name=pName;
	}
	public void Sample(){
		System.out.println(name);
	}
}
class Children extends Base{
	public Children(){
		super("child1");//
		name="child2";
	}
}
public class Method {
	public static void main(String[] args) {
		Children c=new Children();
		c.Sample();
	}
}

大家猜猜输出结果是什么?不信你先写出答案,再动手上机操作下,估计很多初学者都会做错。我当时也是百思不得其解,后面看到super关键字的用法才恍然大悟:

在Java中,super关键字有两个主要用途;
第一种用途是:在子类的构造方法中,super关键字可以显式地调用父类的构造方法,用于将参数传递给它;
其一般语法是:
super(实际参数);
需要注意的是:该语句必须是子类构造方法的第一条语句。

如果父类和子类中有同名成员,在子类中默认访问是属于自己的那一个成员;
super关键字可以明确地指定要访问父类中的成员;
其一般语法是:
super.成员名;
前提条件是:父类中的该成员不是private的。

看到这里,我想大家应该知道输出结果了吧!(child2)

你可能感兴趣的:(java基础)