黑马程序员技术交流社区

标题: 关于抽象类和 抽象方法,还有接口 [打印本页]

作者: 柳雷    时间: 2012-7-24 09:54
标题: 关于抽象类和 抽象方法,还有接口
本帖最后由 柳雷 于 2012-7-26 16:25 编辑

abstract class可不可以不包含抽象方法,抽象类中可不可以有静态方法?
可不可以一个类中有抽象方法但这个类没有用到abstract修饰符?
另外抽象类和接口,我知道接口就是方法全部都是抽象的抽象类,那要用到接口是不是得把所有的抽象方法都得实现啊,用到接口谁能把所有方法都记住啊?
关于“抽象类可以不包括抽象方法 但是含有抽象方法的类必须是抽象类”该则么么理解啊?
作者: 古银平    时间: 2012-7-24 10:08
抽象类的特点:
1,抽象方法一定在抽象类中。
2,抽象方法和抽象类都必须被abstract关键字修饰。
3,抽象类不可以用new创建对象。因为调用抽象方法没意义。
4,抽象类中的抽象方法要被使用,必须由子类复写起所有的抽象方法后,建立子类对象调用。
        如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。


抽象类和一般类没有太大的不同。
该如何描述事物,就如何描述事物,只不过,该事物出现了一些看不懂的东西。
这些不确定的部分,也是该事物的功能,需要明确出现。但是无法定义主体。
通过抽象方法来表示。

抽象类比一般类多个了抽象函数。就是在类中可以定义抽象方法。
抽象类不可以实例化。


特殊:抽象类中可以不定义抽象方法,这样做仅仅是不让该类建立对象。


作者: 乐峰    时间: 2012-7-24 10:18
抽象类可以不包括抽象方法,抽象类中可以有静态方法。因为抽象类不能实例化,所以它的静态方法可以用类名.方法名来调用。如果一个类要实现某个接口,那么一定要全部复写该接口的所有抽象方法,但不一定全部都实现。所以抽象类可以不包括抽象方法 但是含有抽象方法的类必须是抽象类,必须要用到abstract修饰符。
作者: 李菁    时间: 2012-7-24 10:25
抽象类里可以没有抽想方法,但抽象方法必须要在抽象类中。
因为抽象类不能实例化,所以子类必须实现抽象类的的所有抽象方法。
abstract和static不可能同时修饰一个方法的,因为abstract方法没有方法体,而static方法必须有方法体。所以抽象类里可以有静态方法,但不能把抽象方法修饰成静态。
接口中的方法是没有方法体的,普通类实现接口必须重写全部方法。抽象类实现接口不用重写全部方法,因为接口是抽象类的特殊情况
作者: 李东升    时间: 2012-7-24 10:31
一个抽象类可以不包含抽象方法。
抽象类中可以有静态方法,但是static不能修饰抽象方法,因为当使用static修饰一个方法时,表明这个方法属于该类本身,即通过类就可以调用这个方法。但如果这个方法被定义成抽象方法,将导致通过该类来调用这个方法时出现错误(调用一个没有方法体的方法肯定会出错),因此static和abstract不能同时修饰某个方法。
一个类实现了一个或多个接口后,这个类必须完全实现这些这些接口里所定义的全部抽象方法,也就是重写这些抽象方法。否则,这个类将保留从父接口继承来的抽象方法,有了抽象方法,这个类也就成了抽象类了。
一个抽象类可以不包含抽象方法。但是一个类中有抽象方法,则必须是抽象类。因为abstract修饰的方法必须被其子类重写才有意义,否则这个方法将永远没有方法体。没有方法体的方法,有什么用?
作者: 张莹莹    时间: 2012-7-24 10:32
1.abstract class可不可以不包含抽象方法,抽象类中可不可以有静态方法?
abstract class可以不包含抽象方法,抽象类中可以有静态方法,但是不能有静态的抽象方法。
2.可不可以一个类中有抽象方法但这个类没有用到abstract修饰符?
不可以一个类中有抽象方法但这个类没有用到abstract修饰符?
只要是类中有抽象方法,类必须有abstract修饰符
3.另外抽象类和接口,我知道接口就是方法全部都是抽象的抽象类,那要用到接口是不是得把所有的抽象方法都得实现啊,用到接口谁能把所有方法都记住啊?
抽象类中的方法不一定全是抽象的,而接口中的方法全是静态的不能被修改的数据成员。
也就是说,类体里全部都是抽象方法,可以把这个类定义为接口.
如果实现接口的类是抽象类不必实现所有的抽象方法。
如果不是,就必须全部实现。
4.关于“抽象类可以不包括抽象方法 但是含有抽象方法的类必须是抽象类”该则么么理解啊?
就是说抽象类中既可以有抽象方法,也可以有非抽象的方法;但是一个类中若有抽象方法,则类必须有abstract修饰符,即必须是抽象类。

example.png (13.91 KB, 下载次数: 71)

自己在eclipse里面试试就知道了

自己在eclipse里面试试就知道了

作者: 侯宪博    时间: 2012-7-24 10:45
接口的和抽象类是不一样的
类就是类,接口是接口
子类父类之间是继承关系
接口是需要用类来实现的
接口与接口之间可以继承
而且他们里面的抽象方法必须全部被覆盖
否则其子类还是抽象类
希望对楼主有所帮助

作者: 刘海源    时间: 2012-7-24 12:23
抽象类:
特点:
1,没有方法体的方法是抽象方法,一定定义在抽象类中。
2,抽象类和抽象方法必须用abstract关键字所修饰。
3,抽象类不可以被实例化,为啥?
   因为调用抽象方法没有意义
4,抽象类必须尤其子类覆盖所有的抽象方法,其子类才可以进行实例化。
   是否责,该类还是个抽象类


   细节问题
1,抽象类一定是个父类?
  是,

2,抽象类是否可以不定义抽象方法?
  可以的,为了不让其创建对象,这种情况在java的体系中就有存在,一个


3,抽象类是否有构造函数?
   有,因为是给子类对象提供初始化动作的。


4,抽象关键字不能和哪些关键字共存?
  final :不能被继承:,而abstract需要被继承
  private 不能被覆盖了,
  static 不能被继承,继承之后没什么实在意义


一般类和抽象类有什么异同/
相同之处:
一般类和抽象类都用与描述事物,
里面可以定义属性和行为,以及构造函数
不同之处:
一般类中不可以定义抽象函数,抽象类可以,
一般函数可以被实例化,抽象类不行
一般类可以被继承,也可以不被继承
抽象类一定要被继承,需要其子类覆盖




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