abstract class Animal{
String name;
String color;
public Animal(String name,String color){
this.name = name;
this.color = color;
}
public abstract void run();
}
//鱼
class Fish extends Animal{
public Fish(String name,String color){
super(name,color);
}
public void run(){
System.out.println(name+"摇尾巴游啊游啊..");
}
//特有的方法
public void bubble(){
System.out.println(name+"在吹泡泡..");
}
}
class Mouse extends Animal{
public Mouse(String name,String color){
super(name,color);
}
public void run(){
System.out.println(name+"四条腿大摇大摆的走!!");
}
//特有的方法
public void dig(){
System.out.println(name+"在挖洞...");
}
}
class Demo70
{
public static void main(String[] args)
{
//System.out.println("Hello World!");
/*
Animal a = new Fish("锦鲤","白色"); //自动类型转换
Fish f = (Fish)a; //强制类型转换 相当于把动物看成了鱼
f.bubble();
*/
Animal a = new Fish("锦鲤","白色");
print(a);
//Animal b = new Mouse("竹鼠","白色");
//print(b);
}
//需求: 定义一个方法可以接受任何类型的动物对象,在方法内部调用动物对象特有的方法。
public static void print(Animal a){
if(a instanceof Fish){
Fish f= (Fish)a;
f.bubble();
}else if(a instanceof Mouse){
Mouse m = (Mouse)a;
m.dig();
}
}
// .ClassCastException 强制类型转换异常。 引用类型变量做强制类型转换之前一般都会使用instanceof关键字先判断
}
JAVA小练习70——多态的练习:强制类型转换的练习
最新推荐文章于 2023-05-30 18:19:37 发布