当前位置: 代码迷 >> Java相关 >> tostring 在Object中的实现方法和main中有什么不同
  详细解决方案

tostring 在Object中的实现方法和main中有什么不同

热度:1017   发布时间:2013-11-15 14:54:37.0
tostring 在Object中的实现方法和main中有什么不同
求大神讲解,能举例就更好了!
搜索更多相关的解决方案: Object  

----------------解决方案--------------------------------------------------------
没明白你问的意思
----------------解决方案--------------------------------------------------------
要求是:编写一个可吃接口Eatable,其中有一个haoToEat抽象方法。创建两组类Animal类和Fruit类,每种可吃的类必须能实现Eatable接口。并创建Animal类的子类Tiger、Chicken和Elephant,创建Fruit类的子类Apple和Orange。在每一个类中重写toString方法。创建测试程序。
 在测试程序中可以调用showObject方法显示对象:
 public static void showObject(Object o)
 {System.out.println(o);
  if(o instanceof Eatable)
  {
  ((Eatable)o).howToEat();
  }
 }
不太懂showObject
下面是我自己写的一段程序
interface Eatable
    {
    public void HowToEat();
    }
    class Animal
    {   
        String Type;
        int legs;
        String HairColor;
        Animal(String t,int l,String h)
        {
            Type=t;
            legs=l;
            HairColor=h;
        }
        
    }
class Tiger extends Animal
    {
     String Series;
     Tiger(String t, int l, String h,String s) {
        super(t, l, h);
        Series=s;
    }
    public String tostring(){
         System.out.println("老虎的基本情况:");
         return "[老虎的种类:"+Type+",这只老虎的类型:"+Series+",腿的数量:"+legs+"个,老虎的毛色:"+HairColor+",]";
    }            
    }
class Chicken extends Animal implements Eatable
    {
    int Wing;
    Chicken(String t, int l, String h,int w) {
        super(t, l, h);
        Wing=w;
    }
     public String tostring(){
         System.out.println("鸡的基本情况:");
         return "[鸡的种类:"+Type+",这只鸡翅膀的个数:"+Wing+",腿的数量:"+legs+"个,鸡的毛色:"+HairColor+",]";
    }        
    public void HowToEat() {
        System.out.println("烤鸡。");
    }
    }
class Elephant extends Animal
    {
    String NoseCanDrink;
    Elephant(String t, int l, String h,String n) {
        super(t, l, h);
        NoseCanDrink=n;
    }
     public String tostring(){
         System.out.println("大象的基本情况:");
         return "[大象的种类:"+Type+",大象的"+NoseCanDrink+",腿的数量:"+legs+"个,大象的毛色:"+HairColor+",]";
    }   
    }
   
class Fruit implements Eatable
    {
        String PeelColor;
        int LeavesNumber;
        String Origin;
        Fruit(String p,int l,String o)
        {
            PeelColor=p;
            LeavesNumber=l;
            Origin=o;
            
        }
        public void HowToEat()
        {
             System.out.println("咬着吃。");
        };
    }
class Apple extends Fruit implements Eatable
    {
    String Shape;
    Apple(String p, int l,String o,String s) {
        super(p, l,o);
        Shape=s;
    }
    public String tostring(){
        System.out.println("苹果的基本情况:");
        return "[苹果的原产地:"+Origin+",苹果的外形:"+Shape+",每个苹果叶子的数量"+LeavesNumber+"个,苹果果皮的颜色:"+PeelColor+",]";
   }   
    public void HowToEat() {
        System.out.println("苹果的吃法:榨汁(苹果汁),煎炸(苹果派),晾干(苹果干),做果酱,生吃,拌水果沙拉。");
    }
    }
class Orange extends Fruit implements Eatable
    {
    String Pulp;
    Orange(String p, int l, String o,String u) {
        super(p, l, o);
        Pulp=u;
        
    }
    public String tostring(){
           System.out.println("橙子的基本情况:");
           return "[橙子的原产地:"+Origin+",橙子果肉的形状:"+Pulp+",每个橙子叶子的数量"+LeavesNumber+"个,橙子果皮的颜色:"+PeelColor+",]";
      }

    public void HowToEat()
    {
    System.out.println("橙子的吃法:直接吃、榨橙汁、做菜(香橙排骨等)、炖冰糖、炖盐巴(炖法:把橙子顶部切开露出部份橙肉即可,放上冰糖或盐巴,再盖回顶部。)");   
    }
    }
public class HowToEatDemo1 {
    public static void main(String[] args){
        Animal t=new Tiger("哺乳动物",4,"黄色","东北虎");
        Animal c=new Chicken("鸟类",2,"淡黄色",2);
        Animal e=new Elephant("哺乳动物",4,"灰色","用鼻子喝水");
        Fruit a=new Apple("红色",2,"北方","椭圆形");
        Fruit o=new Orange("橙色",2,"南方","瓣状");
        showObject(t);
          showObject(c);
          showObject(e);
          showObject(a);
          showObject(o);
    }

     public static void showObject(Object object) {
          System.out.println(object);
          if (object instanceof Eatable) {
           ((Eatable) object).HowToEat();
          }
         }
}
可是 tostring 显示不出来,是怎么回事?
----------------解决方案--------------------------------------------------------
很明显 System.out.println(object); 这里的object 是Object类型的 需要强制转换成你想要的那个类 才能调用那个类的方法
把showObject的形参类型改成 Eatable就行了 因为代码中所有的类都实现了Eatable 是它的实现类

----------------解决方案--------------------------------------------------------
求大神指教,如何更改,怎么改前面都是有三角形。。我用的是 MyEclipse
----------------解决方案--------------------------------------------------------
  相关解决方案