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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 硫氢化铁 中级黑马   /  2015-3-7 16:13  /  1114 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

看毕老师的视频说抽象类里面可以不定义抽象方法,其目的是不让该类建立对象,我不明白的是,如果都不让定义抽象方法了,那么该类怎么能叫做抽象类呢,麻烦大家给解释一下这句话的意思,多谢

点评

建议楼主百度~  发表于 2015-3-7 19:31

9 个回复

倒序浏览
其实,抽象类和一般类没有太大的区别,都是在描述事物,只不过抽象类在描述事物时,有些功能不具体。所以抽象类和一般类在定义上,都是需要定义属性和行为的。只不过,比一般类多了一个抽象函数。而且比一般类少了一个创建对象的部分。
回复 使用道具 举报
艺多不压身丶 发表于 2015-3-7 16:17
其实,抽象类和一般类没有太大的区别,都是在描述事物,只不过抽象类在描述事物时,有些功能不具体。所以抽 ...

这个我理解,可是抽象类的特殊之处就在于他有一个抽象函数,如果没有这个抽象方法,那不就和一般类一样了吗,那就不应该叫做抽象类吧,我是这块没理解

点评

还是没理解........  发表于 2015-3-7 16:31
还是没看懂我这话。你需要定义抽象方法的时候自然是有用的,你不需要的时候就当他是一个标记,不让创建对象的,就完事了呗。  发表于 2015-3-7 16:27
回复 使用道具 举报
1、抽象方法实际上可以理解为是一种虚方法,可以被重载,不同之处是抽象方法必须被子类重载,而虚方法可以被重载,也可以不被重载,意思就是说抽象方法是基类设计者认为该类必须实现的功能,例如设计一个人的类时,吃饭就必须被重载,因为如果不吃饭人就会死,但是可能有人吃米饭,有人吃馒头; 2、delphi中除了虚方法还有一种称之为动态方法的方法,印象里好像跟虚方法类似,只是一个先绑定还是候绑定的问题。

评分

参与人数 1技术分 +1 收起 理由
万合天宜 + 1 很给力!

查看全部评分

回复 使用道具 举报
本帖最后由 z47057554 于 2015-3-8 05:28 编辑





    1. interface InterfaceDemo{

    2. void method1();//当接口中出现很多函数时

    3. void method2();

    4. ...

    5. void methodn();

    6. }

    7. //而你只想使用其中某个或某些时,可你必须复写InterfaceDemo中的全部方法

    8. //那么此时,你可以定义一个没有抽象函数的抽象类来简化过程,如下

    9. abstract SimpleDemo implements InterfaceDemo{

    10. void method1(){}//实现所有,但所有的功能都是空,想要使用InterfaceDemo时只要继承该类时需复写想要使用的方法即可
    11. void method2(){}//这种类的实例同样没有意义,所以设定为抽象类。API中有具体的例子,是哪个记不起来了,凑合看吧

    12. ...

    13. void methodn(){}

    14. }




    复制代码

回复 使用道具 举报

谢了啊,这么早就在研究Java啊
回复 使用道具 举报
抽象类中可以不定义抽象方法这句话应该是这样的:抽象类中可以没有抽象方法,记得只有一个特例接口,没有定义任何内容,仅仅是为了提供功能扩展的接口
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马