黑马程序员技术交流社区
标题:
继承小程序
[打印本页]
作者:
凝聚
时间:
2013-11-16 11:54
标题:
继承小程序
本帖最后由 凝聚 于 2013-11-16 18:42 编辑
这是题目:
编程实现:猫和狗都会叫,但猫是喵喵的叫,狗是汪汪的叫?定义一个动物类,在动物类(animal)中有一个叫的抽象方法。 写两个子类,一个猫一个狗,继承自动物类,并实现相应的抽象方法。
这是我做的:
package test;
public class Ninie {
public static void main(String[] args) {
fun(new cat());
fun(new dog());
}
public static void fun(animal a)
{
a.jiao();
}
}
abstract class animal
{
abstract void jiao();
}
class cat extends animal
{
public void jiao()
{
System.out.println("猫的叫声:"+"喵喵");
}
}
class dog extends animal
{
public void jiao()
{
System.out.println("狗的叫声:"+"汪汪");
}
}
请大神评价这样做合格吗?
作者:
敗唫①輩ふ
时间:
2013-11-16 12:59
不算合格,因为他的动物类里只有一个方法,而且是抽象方法,所以动物这个所谓的类不是抽象类而是接口,所以动物这个不是用abstract而是用interface。接口是特殊的抽象类。
作者:
Weix1992
时间:
2013-11-16 17:17
LS说的太严格,楼主的题目也没要求这么多,总的来说是可以的,就是不算特别严谨,你可以在动物类中加几个动物都有的方法,比如sleep(),eat()等等的
作者:
hubby
时间:
2013-11-16 18:18
你这个只是覆盖了父类的方法。。。完全没有子类的特有方法,你这样的话只能在main中调用一个他们共有的方法jiao。。但是一般子类都是父类的扩展,一般都有自己的扩展方法。当你在子类加入特有方法后,如果在main函数中想用父类的引用调用子类特有的函数的话,可以向下转型调用子类特有方法。而且不用单独在定义function这个方法了。就你这个举个简单的例子
animal a=new cat();直接调用父类animal方法a.jiao()就行了(不用再定义func方法了)如果要调用cat特殊方法,只要将a向下转型(cat)a.(cat的特殊方法)就行了。
这样的话还可以对多态有更深的理解。你这个实用性较低,只是单纯的覆盖方法。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2