public class car(){
int num;
String name;
public car(){
System.out.println("这个是父类的方法");
}
public class bus extends car{
public bus(){
System.out.println(name+"上乘坐"+num);
}
public class demo(){
car a=new bus();
a.num=10;
a.name="xiaomi";
}
}
问什么运行出来是name和num是空
}
很简单,这个题目出来的值为空,并不是因为赋值失败,而是因为构造函数先执行了,你创建对象的时候就执行构造函数,所以先Sys出属性值,当时还没有被复制,当然是初始值的空了。然后才执行到赋值。
解决的方法很简答, 你在 class car里再写一个方法
public void show(){
System.out.println(name+"上乘坐"+num);
}
然后主函数main 在最下面调用
a.show();
出来的就是:
xiaomi上乘坐10
public class demo{
public static void main(String[] args)
{
car1 a=new bus();
}
}
public class bus extends car1
{
public bus()
{
super(14,"xiaomi");
System.out.println(name+"上乘坐"+num);
}
}
public class car1
{
int num;
String name;
public car1(int num,String name)
{
this.num=num;
this.name=name;
System.out.println("这个是父类的方法"+name);
}