【奔跑的菜鸟】Java中的多态

多态应该算面向对象编程中的一个难点。那么究竟什么才算是多态呢?实际上多态最显著的特征就是晚绑定。如果没有晚绑定,就不是多态。多态建立在封装、继承的基础之上。用它通常的表现的形式来说就是:父类的引用可以指向子类的对象,子类的引用不可以指向父类的对象。这其中就存在着upcast和downcast。所谓的upcast,就是向上类型转换,在使用upcast时,一般可以不使用强制类型转换符号。然而downcast时。就必须使用强制类型转换。这里先举一个简单的例子。

class A
Class B extends A

/*********************upcast**********************/
B b = new B();

A a = b;


/*********************downcast********************/

A b = new B();

B bt = (B)b;//此时(B)是必须的,因为刚开始b类型为A



那么究竟,多态在实际的编程中有什么用呢?多态可以屏蔽子类之间的差异性,用父类的标示公共接口。看下面的代码:

public class Test
{
	public void whoIsRuning(Car car)
	{
		car.fun();
	}
	
	public static void main(String[] args)
	{
		Test test = new Test();
		Car_1 car1 = new Car_1();
		test.whoIsRuning(car1);
		System.out.println("------------------------------------------");
		Car_2 car2 = new Car_2();
		test.whoIsRuning(car2);
	}
}

class Car
{
		public void fun()
		{
			System.out.println("Car is running");
		}
}

class Car_1 extends Car
{
		public void fun()
		{
			System.out.println("Car_1 is running");
		}
}

class Car_2 extends Car
{
		public void fun()
		{
			System.out.println("Car_2 is running");
		}
}







  
  
  






其运行结果为

Car_1 is running
------------------------------------------
Car_2 is running

用父类标识公共接口,直接传入子类,调用子类的方法。

你可能感兴趣的:(奔跑的菜鸟)