abstract class Person
{
private String name;
public void setName(String name)
{
this.name=name;
}
public String getName()
{
return this.name;
}
public Person()
{
System.out.println("嘎嘎嘎!!!");
}
public Person(String name)
{
this.setName(name);
} public void say()
{
System.out.println("注意:"+this.getContent());
} abstract String getContent();
} class Worker extends Person
{
private float salary;
public void setSalary(float salary)
{
this.salary=salary;
}
public float getSalary()
{
return this.salary;
} public Worker()
{
System.out.println("哈哈哈!!!");
}
public Worker(String name,float salary)
{
super(name);
this.setSalary(salary);
this.say();
} public String getContent()
{
return "Worker 说话了"+super.getName()+this.getSalary();
}
} class Student extends Person
{
public String getContent()
{
return "Student 说话了";
}}public class Test1
{
public static void main(String args[])
{
Person p=null;
p=new Worker();
//w.say();
}
}
请问上面的代码为什么执行后是这个呢?
嘎嘎嘎!!!
哈哈哈!!!
而不是:子类中的
哈哈哈!!!
{
private String name;
public void setName(String name)
{
this.name=name;
}
public String getName()
{
return this.name;
}
public Person()
{
System.out.println("嘎嘎嘎!!!");
}
public Person(String name)
{
this.setName(name);
} public void say()
{
System.out.println("注意:"+this.getContent());
} abstract String getContent();
} class Worker extends Person
{
private float salary;
public void setSalary(float salary)
{
this.salary=salary;
}
public float getSalary()
{
return this.salary;
} public Worker()
{
System.out.println("哈哈哈!!!");
}
public Worker(String name,float salary)
{
super(name);
this.setSalary(salary);
this.say();
} public String getContent()
{
return "Worker 说话了"+super.getName()+this.getSalary();
}
} class Student extends Person
{
public String getContent()
{
return "Student 说话了";
}}public class Test1
{
public static void main(String args[])
{
Person p=null;
p=new Worker();
//w.say();
}
}
请问上面的代码为什么执行后是这个呢?
嘎嘎嘎!!!
哈哈哈!!!
而不是:子类中的
哈哈哈!!!
public Person()
{
System.out.println("嘎嘎嘎!!!");
}
还是
Worker worker = new Worker();
都会调用父类的构造函数,你不写会默认的调用super();
有参的构造函数尤其要注意,有时你必须写super(something...);