多态“非静态方法:编译看左边,运行看右边”——妈妈再也不用担心我不懂多态了

多态下的(一定要是多态)

向上转型:相当于自动类型转换,由低类型到高类型
定义:将子类的引用转成父类的引用.注意:只是将引用进行转换,与=后面的对象无关
**向下转型:**相当于强制类型转换,由高类型到低类型
定义:将父类的引用强制转换成子类的引用.—调用子类特有的方法

当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。

多态的好处:可以使程序有良好的扩展,并可以对所有类的对象进行通用处理。

##例子
输出下列代码结果:

public class Demo1 {
	public static void main(String[] args)
	{
		int i=0;
		Fu f=new Demo();
		Demo d=new Demo();
		for(f.show('A'); f.show('B')&&(i<2);f.show('C'))
		{
			i++;
			d.show('D');
		}	
	}
}
class Fu
{
	boolean show(char a)
	{
		System.out.println(a);
		return true;
	}
}
class Demo extends Fu
{
	boolean show(char a)
	{
		System.out.println(a);
		return false;
	}
}

结果为

A
B

当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。
分析:根据“非静态方法:编译看左边,运行看右边”,运行时看的是new Demo(),这时由于子类复写了父类的方法show(),所以调用子类的方法,结果返回false,当运行到f.show(“B”)时式子不成立了,所以跳出循环结束程序。
在这里,如果子类中没有或没有复写父类方法show(),程序就会执行父类中的show()方法,然后输出:

A
B
D
C
B
D
C
B
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值