黑马程序员技术交流社区

标题: 这块 没搞明白 我感觉只能进行到这步了 求指教 [打印本页]

作者: haohanlinyu    时间: 2014-6-9 12:56
标题: 这块 没搞明白 我感觉只能进行到这步了 求指教
本帖最后由 haohanlinyu 于 2014-6-10 23:01 编辑

package com.itheima;
/*9、 编程实现:猫和狗都会叫,但猫是喵喵的叫,狗是汪汪的叫?定义一个动物类,在动物类(animal)中有一个叫的抽象方法。 写两个子类,一个猫一个狗,继承自动物类,并实现相应的抽象方法。*/
public class Test9
{
        public static void main(String[] args)
        {
               
        }
        
}
public abstract  class abstract animal
{
        public static void main(String[] args)
        {
                callmethod();
        }
        public static abstract callmethod()
        {
                System.out.println("叫");
        }
}
public class cat extends animal
{
        public static void main(String[] args)
        {
                 callmethod();
        }
        public static abstract callmethod()
        {
                System.out.println("喵喵的叫");
        }
}
public abstract class dog extends animal
{
        public static void main(String[] args)
        {
                 callmethod();
        }
        public static abstract callmethod()
        {
                System.out.println("汪汪的叫");
        }
}
作者: 小草君    时间: 2014-6-9 13:31
本帖最后由 小草君 于 2014-6-9 13:40 编辑

楼主,你这代码写的什么啊?抽象的dog继承抽象的animal,这什么啊



abstract class Animal{
          abstract void  call();
}
class Dog extends Animal{
         public void call(){
                     System.out.println("汪汪的叫");

              }
}
class Cat extends Animal{
         public void call(){
                     System.out.println("喵喵的叫");
              }
}
class ExtendsDemo{
                 public static void main(String[] args){
                           Dog d = new Dog();
                             d.call();
        }

}你那点要求这就可以了

作者: haohanlinyu    时间: 2014-6-9 14:02
小草君 发表于 2014-6-9 13:31
楼主,你这代码写的什么啊?抽象的dog继承抽象的animal,这什么啊

谢谢  这地方 没整明白  
作者: 酸奶小哥    时间: 2014-6-9 14:13
  1. public class Test {
  2.         public static void main(String[] args){
  3.                 new Cat().call();
  4.                 new Dog().call();

  5.         }
  6. }

  7. abstract class Animal{
  8.         abstract void call();
  9. }

  10. class Dog extends Animal{
  11.         public void call(){
  12.                 System.out.println("旺旺");
  13.         }
  14. }

  15. class Cat extends Animal{
  16.         public void  call() {
  17.         System.out.println("喵喵");
  18. }
  19. }
复制代码

作者: 酸奶小哥    时间: 2014-6-9 14:17
haohanlinyu 发表于 2014-6-9 14:02
谢谢  这地方 没整明白

继承抽象方法之后,并在子类中实现父类中的抽象方法,就行了
作者: haohanlinyu    时间: 2014-6-9 14:30
酸奶小哥 发表于 2014-6-9 14:17
继承抽象方法之后,并在子类中实现父类中的抽象方法,就行了

父类用abstract修饰过,继承的子类前面用abstract修饰吗??
还有子类覆盖父类的抽象方法可以吗??
作者: woshihq    时间: 2014-6-9 14:32
挺简单的啊。。。。
作者: 葛晓东    时间: 2014-6-9 14:33

  1. /*编程实现:猫和狗都会叫,但猫是喵喵的叫,狗是汪汪的叫?
  2. * 定义一个动物类,在动物类(animal)中有一个叫的抽象方法。
  3. * 写两个子类,一个猫一个狗,继承自动物类,并实现相应的抽象方法。
  4. */
  5. /*
  6.         分析:
  7.         1、定义抽象类Animal和抽象方法叫(cry())
  8.         2、定义两个子类并继承动物类,重写父类的抽象方法
  9.         3、创建对象,调用子类方法
  10. */
  11.         //定义抽象类Animal
  12. abstract class Animal{
  13.         //定义抽象方法
  14.         abstract void cry();
  15. }
  16.         //创建子类,并重写父类的抽象方法
  17. class Cat extends Animal{
  18.         public void cry(){
  19.         System.out.println("喵喵");
  20.         }
  21. }
  22. class Dog extends Animal{
  23.         public void cry(){
  24.         System.out.println("汪汪");
  25.         }
  26. }
  27. public class Test9{
  28.         public static void main(String[] args){
  29.                 //在测试类中创建对象,调用子类方法,
  30.                 Animal a1 = new Cat();
  31.                 Animal a2 = new Dog();
  32.                 a1.cry();
  33.                 a2.cry();
  34.         }
  35. }
复制代码
这样吧  感觉写的还好,有注释  你看看
作者: 酸奶小哥    时间: 2014-6-9 14:34
haohanlinyu 发表于 2014-6-9 14:30
父类用abstract修饰过,继承的子类前面用abstract修饰吗??
还有子类覆盖父类的抽象方法可以吗?? ...

只有抽象方法前才加abstract修饰,子类已经实现了父类的抽象方法,就不算是抽象类了。父类的抽象方法就没有方法实体,怎么算是覆盖呢?
作者: haohanlinyu    时间: 2014-6-9 14:39
酸奶小哥 发表于 2014-6-9 14:34
只有抽象方法前才加abstract修饰,子类已经实现了父类的抽象方法,就不算是抽象类了。父类的抽象方法就没 ...

如果父类的抽象方法就有抽象方法实体,子类要用到父类的抽象方法,是不是应该覆盖?
如果父类的抽象方法都没有方法实体,抽象的作用是什么??糊涂中。。。。。。
作者: 酸奶小哥    时间: 2014-6-9 14:47
haohanlinyu 发表于 2014-6-9 14:39
如果父类的抽象方法就有抽象方法实体,子类要用到父类的抽象方法,是不是应该覆盖?
如果父类的抽象方法 ...

抽象的作用就是,让子类自己去定义自己的方法。就跟动物类,子类动物叫声不一样,如果它们都是“食肉”的,这个eat()方法就可以在父类中直接写,子类直接用就可以了,不用在重复写。
作者: haohanlinyu    时间: 2014-6-9 14:48
haohanlinyu 发表于 2014-6-9 14:39
如果父类的抽象方法就有抽象方法实体,子类要用到父类的抽象方法,是不是应该覆盖?
如果父类的抽象方法 ...

抽象方法”,属于一种不完整的方法,只含有一个声明,没有方法主体。

抽象方法声明时采用的语法:
abstract void f();

如果从一个抽象类继承,而且想生成新类型的一个对象,就必须为基础类中的所有抽象方法提供方法定义。
作者: haohanlinyu    时间: 2014-6-9 14:51
酸奶小哥 发表于 2014-6-9 14:47
抽象的作用就是,让子类自己去定义自己的方法。就跟动物类,子类动物叫声不一样,如果它们都是“食肉”的 ...

明白了  谢谢  学的都还回去
作者: haohanlinyu    时间: 2014-6-9 14:54
haohanlinyu 发表于 2014-6-9 14:48
抽象方法”,属于一种不完整的方法,只含有一个声明,没有方法主体。

抽象方法声明时采用的语法:

并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类往往用来表征我们在对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。比如:如果我们进行一个图形编辑软件的开发,就会发现问题领域存在着圆、三角形这样一些具体概念,它们是不同的,但是它们又都属于形状这样一个概念,形状这个概念在问题领域是不存在的,它就是一个抽象概念。正是因为抽象的概念在问题领域没有对应的具体概念,所以用以表征抽象概念的抽象类是不能够实例化的。
作者: a6217815    时间: 2014-6-9 15:57
父类中定义抽象方法,但不实现,实现交给子类
作者: Dr_manhattan    时间: 2014-6-9 16:17
楼主视频没认真看。
作者: haohanlinyu    时间: 2014-6-9 19:12
Dr_manhattan 发表于 2014-6-9 16:17
楼主视频没认真看。

看了 都还回去了  




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2