Agnoy
2015-02-05 13:43
public class Vehicle{ public int site; public void test(){ System.out.println("site:"+site); } }//父类 public class Car extends Vehicle{ public int site=5; }//子类 public static void main(String[] args) { Vehicle v=new Car(); v.test(); }
想请问为什么这时候输出的是 site:0
先实例化再赋值就不会这样,那如果我就像让它输出我本身就赋好的值,这段程序该怎么改
public static void main(String[] args) {
Vehicle v=new() Car;
v.test();
}
在主函数中你创建的是父类Vehicle 的对象,调用的是父类的方法,而在父类中site没有赋值所以默认为0啊,
子类继承父类的方法,首先在子类中把test方法写上,然后再main方法中创建子类的实例,再去调用子类中的test方法就可以了。
因为你子类没有重写test()函数,如果你把父类的那个函数复制到子类中,
其他不做改变,那么结果就是子类的数值了。
其实老师说的重点不是这个,而是主要想说多态这个概念。
下面用例子解释为什么视频要用父类引用指向子类对象,也就是实现多态。
程序功能:当交通方式为空运时,输出该交通方式可搭乘人数。
假设你不知道多态时,你会怎么完成以上功能。
/*/////////////////////////////////////////////////////*/
public class Main {
public static void main(String[] args) {
Transport transport;//Transport为交通工具父类
transport=new Car();//Car为子类
transport=new Boat();
transport=new Plane();
if(transport.getMeans().equals("airTransport")){ //getMean()得到交通方式
System.out.println("numOfPeople:"+transport.getNum());
}
}
}
/*////////////////////////////////////////////////////*/
以上代码使用了多态。
即视频里老师说的用父类的引用指向子类对象可以方便的实现该功能。
可是你如果不知道多态,就只能直接用子类引用指向子类对象即
Car car=new Car();Boat boat=new Boat();Plane plane=new Plane();
然后你要去怎么比较呢?难道写三段
if(car.getMeans.equals("airTransport"))
if(boat.getMeans.equals("airTransport"))
if(plane.getMeans.equals("airTransport"))
才能判断得出结果吗?这也太麻烦了。
这时候多态的作用就体现出来了,父类引用会自动地指向不同子类对象,
自动调用各子类对象的重写方法进行比较,这样就方便多了。
现在可以体会到多态的作用了吧。
ps:自己的一点理解,有错误欢迎指出。
//父类
public class Vehicle {
public int site;
public void test(){
System.out.println("site:"+site);
}
}
//子类
public class Car extends Vehicle {
public int site=5;
public void test(){
System.out.println("site:"+site);
}
}
//测试类
public class Intial {
public static void main(String[] args) {
// TODO Auto-generated method stub
Car car = new Car();
car.test();
}
}
要想输出子类的site值,就要调用子类的方法,首先在main中创建子类的对象,如下:
Car car = new Car();
car.test();
可以再说清楚点吗? 谢谢
v.test(); //运行父类方法输出父类值
System.out.println(v.site); //运行实例化的子类方法,输出子类变量值
Java入门第二季 升级版
530652 学习 · 6091 问题
相似问题