+++++++++++++++++++++++++++++++
//定义一个父类:Person
public class Person
{
String name;
int age;
public Person()
{
this.sayHello();
}
public void sayHello()
{
System.out.println("hello~");
}
}
++++++++++++++++++++++++++++++++++
//定义一个子类:Student
public class Student extends Person
{
int id;
public Student(String name, int age, int id)
{
super.name = name;
super.age = age;
this.id = id;
}
public void sayHello()
{
System.out.println("hello,I'm "+name);
}
}
++++++++++++++++++++++++++++++++++
//测试类:StudentDemo
public class StudentDemo
{
public static void main(String[] args)
{
Student s = new Student("zhangsan",20,1301);
s.sayHello();
}
}
+++++++++++++++++++++++++++++++++++++++
//定义一个父类:Person
class Person
{
String name;
int age;
public Person()
{
this.sayHello();
}
public void sayHello()
{
System.out.println("hello~");
}
}
//定义一个子类:Student
class Student extends Person
{
int id;
public Student(String name, int age, int id)
{
//子类中所有的构造函数默认第一行都是super();
// super(); 调用父类空参数的构造方法。
// this.sayHello(); 此句与super起同样的效果。调用的是Student类的sayHell(),因为复写了父类方法。
super.name = name;
super.age = age;
this.id = id;
}
public void sayHello()//复写了父类中的sayHello()
{
System.out.println("hello,I'm "+name);
}
}
//测试类:StudentDemo
class StudentDemo
{
public static void main(String[] args)
{
Student s = new Student("zhangsan",20,1301);//当建立对象时,就调用了super();此时name还没加载。第一次打印name为null;
s.sayHello();//第二次对象已建立,name为"zhangsan"
}
}
下面是你的代码,标注的数字(1)(2)....(6)是执行的顺序,参照我上面给的说明你就明白了
//定义一个父类:Person
public class Person
{
String name;
int age;
public Person()
{
this.sayHello(); (2)
}
public void sayHello()
{
System.out.println("hello~"); (3)
}
}
++++++++++++++++++++++++++++++++++
//定义一个子类:Student
public class Student extends Person
{
int id;
public Student(String name, int age, int id) (4)
{
super.name = name;
super.age = age;
this.id = id;
}
public void sayHello()
{
System.out.println("hello,I'm "+name); (6)
}
}
++++++++++++++++++++++++++++++++++
//测试类:StudentDemo
public class StudentDemo
{
public static void main(String[] args)
{
Student s = new Student("zhangsan",20,1301); (1)
s.sayHello(); (5)
}
}
+++++++++++++++++++++++++++++++++++++++