JAVA_多态性演示a____自动向上转型、向下转型、检查对象是否为某个类型(instanceof)

public class Test01{
	public static void main(String[] args){
		/*
		GoodBoy b = new GoodBoy();//可以使用下面的
		*/
		//用父类的引用Boy指向子类对象GoodBoy
		Boy b = new GoodBoy();//自动向上转型
		b.say();
		
		//GoodBoy gb = (GoodBoy)b;//向下转型(把父类引用转换为子类对象)
		//有可能发生类型转换异常
		
		/*
		 GoodBoy gb = (GoodBoy)b;有可能报错,为了防止,需要用到instanceof
		 instanceof 检查对象是否为某个类型
		*/
		if(b instanceof GoodBoy){
			GoodBoy gb = (GoodBoy)b;
		}
		
		print(b);
	}
	
	public static void print(Boy boy){
		boy.say();
		//代码针对boy来写,不确定是GoodBoy还是BadBoy,在调用print(boy),这个例子对应的是Goodboy
		//这就是多态性
		//如果下面再有OkBoy、Yesboy、WhatBoy,这个方法也同样适用
		//这就是多态性
		//对修改关闭,对扩展开放
	}
}

class BadBoy extends Boy{
	public void say(){
		System.out.println("no~no~no~");
	}
}

class GoodBoy extends Boy{
	public void say(){
		System.out.println("yes~yes~yes~");
	}
}

abstract class Boy{
	public String name;
	public String getName(){
		return name;
	}
	public void setName(){
		this.name = name;
	}

	public abstract void say();
}

你可能感兴趣的:(JAVA_多态性演示a____自动向上转型、向下转型、检查对象是否为某个类型(instanceof))