黑马程序员技术交流社区

标题: 问个关于抽象类和接口的问题哈 [打印本页]

作者: 冯云飞    时间: 2015-3-25 12:34
标题: 问个关于抽象类和接口的问题哈
假设 一个抽象类里有三个方法,,   子类继承后,一定要把三个方法都复写吗?  我只复写了两个,然后就去new对象 可不可以直接用?

假设 一个接口里有三个方法, 子类实现后,一定要把三个方法都复写吗?我只复写两个,然后就去new 对象 可不可以直接用???

假设 一个接口里有两个方法, 我用子类实现,覆盖了两个方法, 然后又添加了自己的其他方法,然后再去new对象 这样可以用吗?

简单说就是 子类如果继承抽象类,或者实现接口,必须要全部复写方法吗?
作者: 冯云飞    时间: 2015-3-25 12:50
  1. public class Demo{
  2.         public static void main(String[] args)
  3.         {
  4.                 Cat m = new Cat();
  5.                 m.eat();  m.run();
  6.                
  7.         }

  8. }
  9. interface Animal
  10. {
  11.         public abstract void eat();
  12.         public abstract void show(); //定义一个抽象的show方法

  13. }

  14. class Cat implements Animal
  15. {
  16.         public void eat() //实现接口中的一个方法
  17.         {
  18.                 System.out.println("eat");
  19.         }
  20.         public void run() //自己重新定义一个方法  并且接口中另外一个show方法没有进行show(){} 实例化
  21.         {
  22.                 System.out.println("run");
  23.         }

  24. }
复制代码



这串代码 我只实现了接口里一个方法, 然后自己又新定义了一个其他方法,最后是可以运行的
到底用不用把所有方法全覆盖啊?

作者: nilielie    时间: 2015-3-25 13:52
抽象类中的非抽象方法不用重写,其他抽象方法必须重写,接口里的方法必须重写。你上面的代码我放入eclipse编译无法通过的,直接报错,必须实现接口里的所有方法
作者: 艺多不压身丶    时间: 2015-3-25 14:23
这种问题你多看看视频就知道了。
作者: 466273082    时间: 2015-3-25 14:56
前面两个不可以直接用,因为你根本没办法new对象呀
作者: 冯云飞    时间: 2015-3-25 19:37
艺多不压身丶 发表于 2015-3-25 14:23
这种问题你多看看视频就知道了。

哦。  呵呵~
作者: 翰墨    时间: 2015-3-26 08:18
    抽象类中的抽象方法要被使用,必须由子类复写起所有的抽象方法后,建立子类对象调用,如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。                                                                                                                              接口不可以创建对象,因为接口中有抽象方法,需要被子类实现,子类对接口中的抽象方法全部覆盖后,子类才可以实例化,否则子类是一个抽象类
作者: 千玉屑    时间: 2015-3-26 08:39
你代码里接口的show方法必须要覆写吧
作者: jiangwenjun    时间: 2015-3-26 09:35
第一个问题:不可以! 如果您没有覆盖完全部抽象方法就一定还要到class前补抽象,有抽象就不可以new。第二个一样不可以! 第三个只要把父类全部复写了,就可以了
作者: 冯云飞    时间: 2015-3-27 22:59
那个叫艺多不压身的真的很讨厌~~




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