你有两点写错了 1、下面这三个属性,你在父类已经定义了,你在子类就不要再定于了,都已经继承过来了 String name; int weight; int legs; 2、下面那句代码位置写得不对 String s = name + "体重" + weight + " " + legs + "条腿"; 应该在构造方法里面写上s = name + "体重" + weight + " " + legs + "条腿"; 如下,一Tiger为例Tiger(String n, int w, int l) { super(n, w, l); s = name + "体重" + weight + " " + legs + "条腿"; }
void haoToEat();
String toString();}
class Animal
{ String name;
int weight;
int legs;
String s=name+"体重"+weight+" "+legs+"条腿";
Animal(String n,int w,int l){
name=n;
weight=w;
legs=l;}
public String toString(){
return s;}
}
class Tiger extends Animal
{ String name;
int weight;
int legs;
String s=name+"体重"+weight+" "+legs+"条腿";
Tiger(String n,int w,int l){
super(n,w,l);}
public String toString(){
return(this.s);
}
}
class Chicken extends Animal implements Eatable
{ String name;
int weight;
int legs;
String s=name+"体重"+weight+" "+legs+"条腿";
Chicken(String n,int w,int l){
super(n,w,l);}
public String toString(){
return(this.s);
}
public void haoToEat(){
System.out.println("熏烤");}
}
class Elephant extends Animal
{ String name;
int weight;
int legs;
String s=name+"体重"+weight+" "+legs+"条腿";
Elephant(String n,int w,int l){
super(n,w,l);}
public String toString(){
return(this.s);
}
}
class Fruit
{ String name;
String color;
String weidao;
String shuxing=name+color+weidao;
Fruit(String nm,String cl,String wd){
name=nm;
color=cl;
weidao=wd;
}
public String toString(){return shuxing;}
}
class Apple extends Fruit implements Eatable
{ String name;
String color;
String weidao;
String shuxing=name+color+weidao;
Apple(String nm,String cl,String wd){
super(nm,cl,wd);}
public String toString(){
return(this.shuxing);
}
public void haoToEat(){
System.out.println("糖拌");
}
}
class Orange extends Fruit implements Eatable
{ String name;
String color;
String weidao;
String shuxing=name+color+weidao;
Orange(String nm,String cl,String wd){
super(nm,cl,wd);}
public String toString(){
return(this.shuxing); }
public void haoToEat(){
System.out.println("生吃");}
}
public class Eating
{ public static void showObject(Object o)
{ System.out.println(o);
if(o instanceof Eatable){
((Eatable)o).haoToEat();
}
}
public static void main(String[] args)
{
Tiger t=new Tiger("laohu",100,4);
Eating.showObject(t);
Chicken c=new Chicken("野鸡",4,2);
Eating.showObject(c);
}
}
null 体重0 0 条腿
java编译运行结果怎么没有获取对象名称和其他属性值呢?
源代码如下: interface Eatable{
void haoToEat();
String toString();}
class Animal
{ String name;
int weight;
int legs;
String s=name+"体重"+weight+" "+legs+"条腿";
Animal(String n,int w,int l){
name=n;
weight=w;
legs=l;}
public String toString(){
return s;}
}
class Tiger extends Animal
{ String name;
int weight;
int legs;
String s=name+"体重"+weight+" "+legs+"条腿";
Tiger(String n,int w,int l){
super(n,w,l);}
public String toString(){
return(this.s);
}
}
class Chicken extends Animal implements Eatable
{ String name;
int weight;
int legs;
String s=name+"体重"+weight+" "+legs+"条腿";
Chicken(String n,int w,int l){
super(n,w,l);}
public String toString(){
return(this.s);
}
public void haoToEat(){
System.out.println("熏烤");}
}
class Elephant extends Animal
{ String name;
int weight;
int legs;
String s=name+"体重"+weight+" "+legs+"条腿";
Elephant(String n,int w,int l){
super(n,w,l);}
public String toString(){
return(this.s);
}
}
class Fruit
{ String name;
String color;
String weidao;
String shuxing=name+color+weidao;
Fruit(String nm,String cl,String wd){
name=nm;
color=cl;
weidao=wd;
}
public String toString(){return shuxing;}
}
class Apple extends Fruit implements Eatable
{ String name;
String color;
String weidao;
String shuxing=name+color+weidao;
Apple(String nm,String cl,String wd){
super(nm,cl,wd);}
public String toString(){
return(this.shuxing);
}
public void haoToEat(){
System.out.println("糖拌");
}
}
class Orange extends Fruit implements Eatable
{ String name;
String color;
String weidao;
String shuxing=name+color+weidao;
Orange(String nm,String cl,String wd){
super(nm,cl,wd);}
public String toString(){
return(this.shuxing); }
public void haoToEat(){
System.out.println("生吃");}
}
public class Eating
{ public static void showObject(Object o)
{ System.out.println(o);
if(o instanceof Eatable){
((Eatable)o).haoToEat();
}
}
public static void main(String[] args)
{
Tiger t=new Tiger("laohu",100,4);
Eating.showObject(t);
Chicken c=new Chicken("野鸡",4,2);
Eating.showObject(c);
}
}
Tiger(String n,int w,int l){
super(n,w,l);
}
你看你子类的构造方法的值都传递到父类中去了,,所以子类中的属性的值 依然为空啊,,,
除非在实例化的时候采用多态,将实例的引用传递给父类。。这样子 就可以了额
Animal a=new Tiger("laohu",100,4);
1、下面这三个属性,你在父类已经定义了,你在子类就不要再定于了,都已经继承过来了
String name;
int weight;
int legs;
2、下面那句代码位置写得不对
String s = name + "体重" + weight + " " + legs + "条腿";
应该在构造方法里面写上s = name + "体重" + weight + " " + legs + "条腿";
如下,一Tiger为例Tiger(String n, int w, int l) {
super(n, w, l);
s = name + "体重" + weight + " " + legs + "条腿";
}