继承与接口综合应用:ShowObject.java
(1)创建接口Eatable:
interface Eatable
{
public void howToEat();
}
(2)创建Animal类及其子类Tiger和Chicken,其中Chicken是可吃的,需实现Eatable接口;
(3)创建Fruit类及其子类Apple和Orange,因为水果可吃,所以Fruit类需实现Eatable接口;在Fruit类中,给出howToEat方法的通用实现,在Apple和Orange类中,给出howToEat方法的特殊实现;
(4)在每一个类中重写toString方法,以返回类名;
(5)创建类ShowObject,包含main方法和showObject方法;在main方法中创建四个实例,分别为tiger、chicken、apple和orange;然后调用showObject方法显示对象;下面是showObject方法:
public static void showObject(Object obj)
{
System.out.print(obj+":");
if (obj instanceof Eatable)
{
((Eatable)obj).howToEat();
}
else System.out.println("can't eat!");
}
以上是题目 我的问题是 1“在Fruit类中,给出howToEat方法的通用实现,在Apple和Orange类中,给出howToEat方法的特殊实现;”这句话是什么意思呢? 2 在每一个类中重写toString方法,以返回类名 这个也不明白..
求助高手 这个是我们老师的作业其中一道 对接口学的不太好 求助高手解答~
(1)创建接口Eatable:
interface Eatable
{
public void howToEat();
}
(2)创建Animal类及其子类Tiger和Chicken,其中Chicken是可吃的,需实现Eatable接口;
(3)创建Fruit类及其子类Apple和Orange,因为水果可吃,所以Fruit类需实现Eatable接口;在Fruit类中,给出howToEat方法的通用实现,在Apple和Orange类中,给出howToEat方法的特殊实现;
(4)在每一个类中重写toString方法,以返回类名;
(5)创建类ShowObject,包含main方法和showObject方法;在main方法中创建四个实例,分别为tiger、chicken、apple和orange;然后调用showObject方法显示对象;下面是showObject方法:
public static void showObject(Object obj)
{
System.out.print(obj+":");
if (obj instanceof Eatable)
{
((Eatable)obj).howToEat();
}
else System.out.println("can't eat!");
}
以上是题目 我的问题是 1“在Fruit类中,给出howToEat方法的通用实现,在Apple和Orange类中,给出howToEat方法的特殊实现;”这句话是什么意思呢? 2 在每一个类中重写toString方法,以返回类名 这个也不明白..
求助高手 这个是我们老师的作业其中一道 对接口学的不太好 求助高手解答~
自定义类实现toString方法的作用是,打印该对象。当然这具体的实现中可以有不同的写法,你的题目中是返回类名。也可以是别的实现。
Apple 和Orange类继承Fruit类,所以Fruit类的所有方法Apple 和Orange类。如果在Apple 和Orange类中默认不重写fruit类的方法。 特殊实现也即重写父类函数,可能他跟父类的方法不同。例如Fruit类方法的howToEat是放入口里,而Apple类是不需要拨皮的,而橘子是要煮熟才能吃的(举个例子),那么就不能调用Fruit类的方法了,只能自己重写函数,就是分别写个howToEat()函数,此时因为父类已经继承了Eatable接口,所以子类也不需要继承了,只需重写函数就行了。
重写toString方法返回类名也就是调用toString方法返回的是类名,可以在父类(Fruit)重写写toString函数,如下 public String toString()
{ System.out.println(this.getClass().toString()); //输出类名,测试用
return this.getClass().toString(); //返回类名,也即从写了toString方法
//以后每次调用toString方法则返回类名
}希望对你有帮助。
interface Eatable
{
public void howToEat();
}class Animal
{
public String toString()
{
return "Animal";
}
}class Tiger extends Animal
{
public String toString()
{
return "Tiger";
}
}class Chicken extends Animal implements Eatable
{
public void howToEat()
{
System.out.println("can eat!!!");
}
public String toString()
{
return "Chicken";
}
}class Fruit implements Eatable
{
public void howToEat()
{
System.out.println("can eat!!!");
}
public String toString()
{
return "Fruit";
}
}class Apple extends Fruit
{
public void howToEat()
{
System.out.println("can eat!!!");
}
public String toString()
{
return "Apple";
}
}class Orange extends Fruit
{
public void howToEat()
{
System.out.println("can eat!!!");
}
public String toString()
{
return "Orange";
}
}
public class Demo
{
public static void main(String args[])
{
Tiger t = new Tiger();
Chicken c = new Chicken();
Apple a = new Apple();
Orange o = new Orange(); showObject(t);
showObject(c);
showObject(a);
showObject(o);
}
public static void showObject(Object obj)
{
System.out.print(obj+":");
if (obj instanceof Eatable)
{
((Eatable)obj).howToEat();
}
else
System.out.println("can't eat!!!");
}
}
好例子!
can eat!!! 可以改成削皮吃,剥皮吃,洗洗吃,煮了吃!!!!!