首页 > 代码库 > 重载,重写,多态例子

重载,重写,多态例子

重载

方法重载是让类以统一的方式处理不同类型数据的一种手段。Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给它们的不同个数和类型的参数来决定具体使用哪个方法。

package com.wzs;

/**
 * 重载
 * 
 * @author Administrator
 * 
 */
public class OverLoadTest {
	public int add(int a, int b) {
		return a + b;
	}

	public double add(double a, double b) {
		return a + b;
	}

	public int add(int a) {
		return a;
	}

	public int add(int a, double b) {
		return 1;
	}

	public int add(double a, int b) {
		return 1;
	}
}

重写

在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖。 若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。 如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。

package com.wzs;

/**
 * 重写
 * 
 * @author Administrator
 * 
 */
public class OverReadTest {

	class Parent {
		public void say() {
			System.out.println("Parent say()");
		}
	}

	class Child extends Parent {
		public void say() {
			System.out.println("Child say()");
		}
	}
}

多态

多态(Polymorphism)按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。引用Charlie Calverts对多态的描述——多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作(摘自“Delphi4 编程技术内幕”)。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。多态性在Object Pascal和C++中都是通过虚函数(Virtual Function) 实现的。

package com.wzs;

/**
 * 多态
 * 
 * @author Administrator
 * 
 */
public class MixinsTest {
	// 卖出一部车
	public static void sellCar(Car car) {
		System.out.println("车型:" + car.getName() + "  单价:" + car.getPrice());
	}

	public static void main(String[] args) {
		sellCar(new BMW());
		sellCar(new CheryQQ());
	}
}

// 车
interface Car {
	public String getName();

	public int getPrice();
}

// 宝马
class BMW implements Car {
	public String getName() {
		return "宝马";
	}

	public int getPrice() {
		return 300000;
	}
}

// 奇瑞QQ
class CheryQQ implements Car {
	public String getName() {
		return "奇瑞QQ";
	}

	public int getPrice() {
		return 20000;
	}
}