当前位置:编程学习 > JAVA >>

求解关于JAVAsuper的用法

class People{
 String name;
People(String name){
this.name=name;
}
public String toString(){
return this.name;
}
}
class Student extends People{
String name="1234";
Student(String name){
super(name);
}
       public String toString(){
return this.name;
}
     
}
public class hh{
public static void main(String []args){
                 Student xx=new Student("qwer");
System.out.println(xx.toString());
}
}

这段代码为什么输出是1234而不是qwer --------------------编程问答-------------------- 你这传过去就没有用,将Student中super(name);改为this.name = name;或者将Student中的toString()方法去掉应该也行,因为你传的值到父类,而toString调的是子类的 --------------------编程问答-------------------- 因为构造方法并未给Student的name赋值;道理的话调试走一遍就能明白的;
倒是你这个类的设计,既然是继承,People本有name属性,Student的name属性用来做什么? --------------------编程问答-------------------- 继承情况下类的初始化顺序
1.父类静态变量
2.父类静态块
3.子类静态变量
4.子类静态块
5.父类非静态变量
6.父类非静态块
7.父类构造函数
8.子类非静态变量
9.子类非静态块
10.子类构造函数 --------------------编程问答-------------------- 如果改为:
Student(String name){
super(name);
this.name=name;
}

就不一样了。 --------------------编程问答-------------------- 在hh类的main函数中加入断点调试一遍,你就会清楚了
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,