class Animal{
int x,y;
String name;
Animal(){}
Animal(String name, int x, int y){
this.name = name;
this.x = x;
this.y = y;
}
void move(){
System.out.println("动物都会移动");
}
void eat(Animal animal){}
}
class Crab extends Animal{
int legs = 8;
Crab(){}
Crab(String name,int x, int y, int legs){
super(name,x,y);
this.legs = legs;
}
//方法重写
void eat(Animal animal){
if(animal instanceof Worm){
System.out.println(this.name + "吃掉了" + animal.name);
}else if(animal instanceof Crab){
System.out.println("我们螃蟹不自相残杀");
Crab oneCrab = (Crab)animal; //强制类型转换,又叫“向下转型”
System.out.println("因为它有" + oneCrab.legs + "条腿");
}else{
System.out.println("食物来源不明,不敢吃");
}
}
void move(){
System.out.println("螃蟹横着走");
}
}
class Worm extends Animal{
Worm(){}
Worm(String name, int x, int y){
super(name,x,y);
}
void move(){
System.out.println("虫子扭着走");
}
}
class LongXia{
void eat(Animal animal){
}
}
public class Demo1{
public static void main(String[] args){
/*
Crab crab = new Crab();
crab.move();
Worm worm = new Worm();
worm.move();
*/
Animal animal = new Crab(); //向上转型。自动类型转换
animal.move(); //
Animal animal2 = new Worm();
animal2.move();
//多态
/*
Animal animal = new Crab();
animal.move();
animal = new Worm();
animal.move();
*/
/*Animal animal01 = new Crab("螃蟹1号",10,10,8);
Animal animal02 = new Crab("螃蟹2号",10,10,8);
animal01.eat(animal02);
Worm worm01 = new Worm("小虫子1号",20,20);
animal01.eat(worm01); //自动对象类型转换,实参worm01从Worm类型自动转为形参的Animal类型
*/
}
}
int x,y;
String name;
Animal(){}
Animal(String name, int x, int y){
this.name = name;
this.x = x;
this.y = y;
}
void move(){
System.out.println("动物都会移动");
}
void eat(Animal animal){}
}
class Crab extends Animal{
int legs = 8;
Crab(){}
Crab(String name,int x, int y, int legs){
super(name,x,y);
this.legs = legs;
}
//方法重写
void eat(Animal animal){
if(animal instanceof Worm){
System.out.println(this.name + "吃掉了" + animal.name);
}else if(animal instanceof Crab){
System.out.println("我们螃蟹不自相残杀");
Crab oneCrab = (Crab)animal; //强制类型转换,又叫“向下转型”
System.out.println("因为它有" + oneCrab.legs + "条腿");
}else{
System.out.println("食物来源不明,不敢吃");
}
}
void move(){
System.out.println("螃蟹横着走");
}
}
class Worm extends Animal{
Worm(){}
Worm(String name, int x, int y){
super(name,x,y);
}
void move(){
System.out.println("虫子扭着走");
}
}
class LongXia{
void eat(Animal animal){
}
}
public class Demo1{
public static void main(String[] args){
/*
Crab crab = new Crab();
crab.move();
Worm worm = new Worm();
worm.move();
*/
Animal animal = new Crab(); //向上转型。自动类型转换
animal.move(); //
Animal animal2 = new Worm();
animal2.move();
//多态
/*
Animal animal = new Crab();
animal.move();
animal = new Worm();
animal.move();
*/
/*Animal animal01 = new Crab("螃蟹1号",10,10,8);
Animal animal02 = new Crab("螃蟹2号",10,10,8);
animal01.eat(animal02);
Worm worm01 = new Worm("小虫子1号",20,20);
animal01.eat(worm01); //自动对象类型转换,实参worm01从Worm类型自动转为形参的Animal类型
*/
}
}