多态基础

package test2;

public class duotai {
	public static void main(String []args) {
		chicken c=new homechicken();//多态,用大的去接受小的。
		tools(c);//如果下面没有instanceof的话,报错,理由同下。
		chicken yc=new yechicken();//多态,用大的去接受小的。
		tools(yc);//如果下面没有instanceof的话,报错,因为yc不是jianjiaochcken类
		chicken jianjiaoChicken=new jianjiaocken();
		tools(jianjiaoChicken);
	}
	public static void tools(chicken ch) {//面向抽象(接口)编程
		if(ch instanceof jianjiaocken)//当我们需要把父类实例强制转换为子类引用的时候,为了避免类型转换的异常,
			//在转换之前通常用instanceof关键字来做类型转换前的检查判断。
//该语句通常判断一个对象是否为一个类的实例,是返回true,否返回false
//通过的条件:子类本身及其以上的父类--》都可以通过检查,返回ture
		{
		
		//注:父类Chicken是有eat方法的,所以可以这么调。实际上传进的是家鸡,那就调用家鸡的eat方法,调用的是野鸡,那就调用野鸡的eat方法
		//需要进行显示的类型转换。从高-->低
		jianjiaocken jjj=(jianjiaocken)ch;//ch是chicken类型,没有song方法,
										//ch.song();//会报错,因为父类chicken中没有song方法,即不能直接在子类中直接调用父类中没有的方法。
		jjj.song();//显示转换完就可以了
		}
		ch.eat();
	}
}
abstract class chicken{
	String nameString;
	public String getNameString() {
		return nameString;
	}
	public void setNameString(String nameString) {
		this.nameString = nameString;
	}
	public chicken() {
		// TODO Auto-generated constructor stub
	}
	public chicken(String name) {
		this.nameString=name;
	}
	abstract void eat();
	
}
class homechicken extends chicken{

	public homechicken() {}
	 public homechicken(String name) {
		// TODO Auto-generated constructor stub
		 super(name);
	}
	@Override
	void eat() {
		// TODO Auto-generated method stub
		System.out.println("家鸡 啊啊啊啊啊 a");
	}
	
}
class yechicken extends chicken{

	public yechicken() {}
	 public yechicken(String name) {
		// TODO Auto-generated constructor stub
		 super(name);
	}
	@Override
	void eat() {
		// TODO Auto-generated method stub
		System.out.println("野鸡鸡 啊啊啊啊啊 a");
	}
	
}
class jianjiaocken extends chicken{

	public jianjiaocken() {}
	 public jianjiaocken(String name) {
		// TODO Auto-generated constructor stub
		 super(name);
	}
	@Override
	void eat() {
		// TODO Auto-generated method stub
		System.out.println("尖叫鸡鸡 啊啊啊啊啊 a");
	}
	//注意这里的song方法只有尖椒鸡有,父类没有。
	void song() {
		System.out.println("尖椒鸡唱歌");
	}
	
}

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值