class Animal{
protected int legs;
protected Animal(int legs){
this.legs=legs;
}
protected String walk(){
return "this animal use"+legs+"to walk";
}
public int getLegs(){
return legs;
}
}
interface Pet{
String play();
}
class Cat extends Animal implements Pet{
private String name; //写的时候常常只写private就忘了String
public String play(){
return name+"like catching mouse";
}
public Cat(int legs,String name){
super(legs);
/*扩展类的构造器必须隐式或显式地选择并调用其超类的某一个构造器。可使用super来显式调用超类的某个构造器。可使用this()来调用本类某个构造器,而不是使用super(),来推迟对超类构造器的选择。超类的无参构造器将在新构造器的所有语句执行之前自动调用 如果超类没有无参构造器,必须显式调用超类的某个构造器,super()必须是构造器的第一条语句*/
this.name=name;
}
public String getName(){
return name;
}
}
class Fish extends Animal implements Pet{
private String name;
public String play(){
return name+"like swimming";
}
public Fish(int legs,String name){
super(legs);
this.name=name;
}
public String getName(){
return name;
}
}
class TestAnimal{
public static void main(String[] args){
Animal[] animals=new Animal[2];
animals[0]=new Cat(4,"doudou");
animals[1]=new Fish(0,"blue");
for(int i=0;i<animals.length;i++){
System.out.println(animals[i].walk()+((Pet)animals[i]).play()); //强制类型转换!还有那个括号必须加上!
}
}
}
代码(与上文相同,供复制用)
class Animal{
protected int legs;
protected Animal(int legs){
this.legs=legs;
}
protected String walk(){
return "this animal use"+legs+"to walk";
}
public int getLegs(){
return legs;
}
}
interface Pet{
String play();
}
class Cat extends Animal implements Pet{
private String name;
public String play(){
return name+"like catching mouse";
}
public Cat(int legs,String name){
super(legs);
this.name=name;
}
public String getName(){
return name;
}
}
class Fish extends Animal implements Pet{
private String name;
public String play(){
return name+"like swimming";
}
public Fish(int legs,String name){
super(legs);
this.name=name;
}
public String getName(){
return name;
}
}
class TestAnimal{
public static void main(String[] args){
Animal[] animals=new Animal[2];
animals[0]=new Cat(4,"doudou");
animals[1]=new Fish(0,"blue");
for(int i=0;i<animals.length;i++){
System.out.println(animals[i].walk()+((Pet)animals[i]).play());
}
}
}