黑马程序员技术交流社区

标题: 视频中讲到抽象类时的疑问 [打印本页]

作者: 张凯    时间: 2012-7-27 17:42
标题: 视频中讲到抽象类时的疑问
本帖最后由 张凯 于 2012-7-28 15:29 编辑

先看代码
  1. class Employee
  2. {
  3.         private String name;
  4.         private String id;
  5.         private double pay;
  6.         Employee(String name,String id,double pay)
  7.                 {
  8.                         this.name=name;
  9.                         this.id=id;
  10.                         this.pay=pay;
  11.                 }
  12.         public abstract void work();
  13. }
复制代码
这是毕老师在讲到抽象类时举的例子,这个类中有抽象方法,但是这个类前面为什么不加abstract,不是抽象函数一定在抽象类中吗?
作者: 赵方明    时间: 2012-7-27 17:48
这是我的笔记,关于抽象类和接口的
抽象类中可以存在非抽象方法,接口中所有的方法都是抽象方法
2,抽象类的特点时什么?
抽象方法一定定义在抽象类里。
抽象方法和抽象类都必须被abstract关键字修饰。
抽象类不能用new关键字建立对象。因为调用抽象方法没意义。
抽象类中的方法要被使用,必须由子类复写其所有的抽象方法后建立子类对象调用。如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。
23,抽象类只能有抽象方法吗?
不是,抽象类可以有一般方法。
24,抽象类和一般类的区别是什么?
抽象类与一般类没有太大不同。该如何描述事物就如何描述事物。只不过该事物中出现了一些看不懂的东西。这些不确定的部分,也是该事物的功能,需要明确出来,但是无法定义主体。
抽象类比一般类多了抽象方法。就是在类中可以定义抽象方法。
抽象类不可以建立对象 一个类中只要有抽象方法 那么这个类就不可以建立对象。
25,抽象类可以不定义抽象方法吗?
可以,这样做是为了不让该类建立对象。
26,什么是模版方法呢?
在定义功能时,功能的一部分是确定,一部分是不确定的,而确定的部分在使用不确定的部分。那么就将不确定的部分暴露出去,由该类的子类去完成。
27,什么是接口?接口的形式是什么样的?它有什么特点?作用是什么?
初期理解,可以理解为一个特殊的抽象类,当抽象类里面所有方法都是抽象的,那么把它称为接口。
形式:interface {}
特点:接口中的成员修饰符是固定的
      成员变量:public static final
      成员函数:public abstract
作用:接口的出现将“多继承”通过另一种方式体现,即“多实现”
接口中的成员都是public的。
28,一般类,抽象类,接口的区别是什么?
抽象类是一般类的特殊,一般类有的特点它也有。
初期理解,可以把接口视为特殊的抽象类。
29,class和interface关键字有什么不同?
class用于定义类
interface用于定义接口
30,接口可不可以创建对象?
不可以,因为接口含有抽象方法。
作者: 肖琦    时间: 2012-7-27 17:53
楼主你写错了,有抽象方法的类必须是抽象类,抽象类不一定有抽象方法,抽象类不能被实例化。
作者: 李菁    时间: 2012-7-27 17:56
抽象方法必须要在抽象类里。
如果是像你说的代码这种情况的话,那可能是Employee的父类是一个抽象类
作者: 张凯    时间: 2012-7-27 19:16
李菁 发表于 2012-7-27 17:56
抽象方法必须要在抽象类里。
如果是像你说的代码这种情况的话,那可能是Employee的父类是一个抽象类 ...

即便它的父类是一个抽象类,那它的子类含有抽象方法,那么子类也应该是抽象类,可能是毕老师一时疏忽,没有在class前面加abstract,我是这么想的。
作者: 李菁    时间: 2012-7-27 19:47
张凯 发表于 2012-7-27 19:16
即便它的父类是一个抽象类,那它的子类含有抽象方法,那么子类也应该是抽象类,可能是毕老师一时疏忽,没 ...

我在我电脑上试了,父类是抽象类,子类继承,子类不写abstract编译也可以通过
作者: fiend    时间: 2012-7-27 19:52
类中有抽象方法,那么这个类必然为抽象类。LZ你的代码是错误的。
作者: 张凯    时间: 2012-7-27 20:41
李菁 发表于 2012-7-27 19:47
我在我电脑上试了,父类是抽象类,子类继承,子类不写abstract编译也可以通过 ...

啊?难道默认的就是abstract,这不与有抽象方法的必须是抽象类矛盾吗





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