您的位置:首页 > 编程语言 > Java开发

对java多态的理解

2013-05-08 17:52 489 查看
-----------android培训java培训、java学习型技术博客、期待与您交流! ------------

多态指同一个实体同时具有多种形式。在生活中多态指的是一个对象在不同环境在的不同状态和行为,例如同样是学生这个对象,但老师眼里的学生和家长眼里的学生是不同的,所以在java中需要多态来实现对象在不同环境下的不同形式。

多态:

多态具体指的是对象在不同状态下表现的形式

多态一般构造于继承和接口的环境下

多态体现在向上转型和向下转型(强制转型)

多态体现在代码上主要是:

①父类  对象名=new 子类()

②在方法上体现,声明方法的时候,形参为父类对象,方法调用时专递得实参是子类的对象

③接口 对象=new 实现类

如果子类以父类的身份出现,子类自身特有的行为将会失效

如果子类以父类的身份出现,子类如果重写父类的方法,调用的是具体子类的方法(动态绑定)。

多态减少了方法重载之后的冗余,实现代码的可扩展性。

例题:编写一个Java应用程序,设计一个汽车类Vehicle,包含的成员属性有:车轮个数wheels和车重weight。小车类Car是Vehicle的子类,其中包含属性载人数passenger_load。卡车Truck是Vehicle的子类,其中包含载人数passenger_load和载重量payload。要求每个类都有相关数据的输出方法。编写测试类使用多态输出汽车的信息

/***

*父类

*/

public class Vehicle {

     /*声明方法*/

     private String name;

double wheels;

double weight;

/*getter,setter方法*/

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public double getWheels() {

return wheels;

}

public void setWheels(double wheels) {

this.wheels = wheels;

}

public double getWeight() {

return weight;

}

public void setWeight(double weight) {

this.weight = weight;

}

/*构造方法*/

public Vehicle(String name, double wheels, double weight) {

super();

this.name = name;

this.wheels = wheels;

this.weight = weight;

}

/*实例方法*/

public void go(){

System.out.println(name+"有"+wheels+"轮子,"+"他的重量是:"+weight+"吨");

}

}

/**

**小汽车类,子类

*/

public class Car extends Vehicle {

public Car(String name, double wheels, double weight) {

super(name, wheels, weight);

}

@Override

public void go() {

super.go();

int passenger_load=5;

System.out.println("他能载"+passenger_load+"个人");

}

}

/**

*卡车类

*/

public class Truck extends Vehicle {

public Truck(String name, double wheels, double weight) {

super(name, wheels, weight);

}

@Override

public void go() {

super.go();

double passenger_load=6;

double payload=10;

System.out.println("他的载人量是:"+passenger_load+"\n"+"他的载重量是"+payload+"吨");

}

}

/*

*测试类

*/

public class test {

public void carry(Vehicle a)

{

a.go();

}

public static void main(String[] args) {

test get=new test();

get.carry(new Car("小汽车",4,5));

System.out.println("--------------------------");

get.carry(new Truck("大卡车",12,6));

}

}

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: