类 的继承2

来源:互联网 发布:结构动力特性试验数据 编辑:程序博客网 时间:2024/04/28 15:59
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类型
*/
}


}
0 0
原创粉丝点击