【第六课】面向对象编程---多态的基础

/*********************************************
 * Time:2016年11月16日 21:27:11
 * Purpose:多态的基础_1
 * Author:ZJY
 * Summary:子类可以当作父类来看待,但父类不能当
 			作子类看待;
 * KnowledgePoint:
 			1.java中的继承不是现实中的继承,实际上java中
 			   的继承反应的是一般到特殊的关系
 			2.父类代表一般,如:人;子类代表特殊,如:男人;
 			  所以子类可以被当作父类来看待,因为男人一定
 			  都是个人;但父类不能被当作子类来看待,因为
 			  人不一定都是男人;
 			3.在程序中的理解:因为子类继承父类的属性和方法,
 			  当把子类当作父类来看待时,因为子类包含了父类
 			  的所有方法和属性,所以并没有冲突;而当把父类
 			  当作子类来看待时,子类的特有的属性和方法父类
 			  并没有,则与实际冲突,所以父类不能被当作子类
 			  来看待。	
*********************************************/
class A
{
	public void f()
	{
		System.out.printf("AAAA\n");
	}
}

class B extends A
{
	public void f()
	{
		System.out.printf("BBBB\n");
	}
}

public class TestPoly_1
{
	public static void main(String[] args)
	{
		A aa1 = new A();
		B bb1 = new B();
		
		aa1.f();
		bb1.f();
		
		aa1 = bb1; //把bb1当作aa1来看待  子类可以被当作父类看待
		//bb1 = aa1; // error //把aa1当作bb1来看待  父类不能被当作子类看待

		aa1.f();
		
	}
}
/*********************************************
 * Time:2016年11月16日 22:29:54
 * Purpose:多态的基础_2
 * Author:ZJY
 * Summary:多态:通过将子类的引用发送给父类的引用
 		实现调用父类的方法间接调用了子类的方法。
 * KnowledgePoint:
 		1.多态的作用: 实现同一个方法在不同的地方处理的
 		  内容不同;(实际上首先在子类中对从父类继承过来
 		  的方法重写该方法,与之与父类中该方法的操作不
 		  一样。然后将子类的引用发送给父类,当在发送之
 		  前父类对应的引用调用的是父类中的该方法,但在
 		  发送后,调用的则是子类中的方法。现实了同一个
 		  方法在不同地方实现不同的操作的目的。)			
*********************************************/
class A
{
	public void f()
	{
		System.out.printf("AAAA\n");
	}
}

class B extends A
{
	public void f()
	{
		System.out.printf("BBBB\n");
	}
}

public class TestPoly_2
{
	public static void main(String[] args)
	{
		A aa1 = new A();
		B bb1 = new B();
		
		aa1.f(); //这个方法与下面的同名方法执行不同的处理
		bb1.f();
		
		/*aa1:A对象的引用,bb1:B对象的引用 */
		aa1 = bb1; 
		
		aa1.f();
		
	}
}

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值