A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 凝聚 中级黑马   /  2013-11-16 11:54  /  1060 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 凝聚 于 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("狗的叫声:"+"汪汪");        
}
}
请大神评价这样做合格吗?




3 个回复

倒序浏览
不算合格,因为他的动物类里只有一个方法,而且是抽象方法,所以动物这个所谓的类不是抽象类而是接口,所以动物这个不是用abstract而是用interface。接口是特殊的抽象类。
回复 使用道具 举报
LS说的太严格,楼主的题目也没要求这么多,总的来说是可以的,就是不算特别严谨,你可以在动物类中加几个动物都有的方法,比如sleep(),eat()等等的
回复 使用道具 举报
你这个只是覆盖了父类的方法。。。完全没有子类的特有方法,你这样的话只能在main中调用一个他们共有的方法jiao。。但是一般子类都是父类的扩展,一般都有自己的扩展方法。当你在子类加入特有方法后,如果在main函数中想用父类的引用调用子类特有的函数的话,可以向下转型调用子类特有方法。而且不用单独在定义function这个方法了。就你这个举个简单的例子
animal a=new cat();直接调用父类animal方法a.jiao()就行了(不用再定义func方法了)如果要调用cat特殊方法,只要将a向下转型(cat)a.(cat的特殊方法)就行了。
这样的话还可以对多态有更深的理解。你这个实用性较低,只是单纯的覆盖方法。

评分

参与人数 1技术分 +1 收起 理由
FFF + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马