黑马程序员技术交流社区

标题: 继承小程序 [打印本页]

作者: 凝聚    时间: 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