黑马程序员技术交流社区

标题: 关于抽象类不能和static和final修饰的问题 [打印本页]

作者: 郑先明    时间: 2013-7-6 01:47
标题: 关于抽象类不能和static和final修饰的问题
本帖最后由 赵海洋 于 2013-7-6 18:20 编辑

今天复习了一下抽象类, 视频上说, 抽象类不能被private, static, final三个所修饰, 对于抽象类不能被私有, 我比较理解, 因为如果私有了, 子类就覆盖不了了抽象方法.
而对于, 为何不能被static和final所修饰, 我还是比较迷糊, 请大家用自己的话说一说.

作者: 毛恩奇    时间: 2013-7-6 01:58
如果被static修饰就能直接类名调用方法,但是抽象方法没有方法主体,调用没意义,而抽象方法不能被final修饰就简单了,如果final修饰了,子类继承就无法重写抽象方法,那继承后的类还是抽象,没意义,这是我的理解
作者: 草貌路飞    时间: 2013-7-6 04:21
我觉得呢,private不能修饰不是因为修饰了抽象类,子类就不能覆盖抽象方法,因为这里说的private修饰的是抽象类而不是方法。 private意思是只能在该类所使用,而如果类都私有了,那这个类就只能被自己使用了,那其它人就不能访问到,所以存在也没有意义。而static修饰的是一个类的类变量或者类方法,不可能说把一个类定义成类的类..而final就如楼上所说,如果抽象类被定义成final的了,那说明它是最终类,也就不能被继承了,那这个抽象类就没有意义了,只能在里面定义些常量,那样的话直接用个接口就可以了。  要想让private 和static修饰符能修饰一个类,那这个类只能是成员内部类…
作者: 陌路行者    时间: 2013-7-6 07:22
final :被final修饰的类不能有子类,而被abstract修饰的类一定是一个父类。
static:如果static 可以修饰抽象方法,那么连对象的省了,直接类名调用就可以了。可是抽象方法运行没有意义。
作者: 黄少海    时间: 2013-7-6 07:51
static: 抽象类中的方法都是没有方法体的。如果调用(用类名加.方法名)。调用一个没有方法体的方法是没有意义的.
final: 被final修饰的类不能被继承。那没抽象类中的方法完全没用。只能调用里面抽象类中有方法体的方法才有意义。如果抽象类中的方法全是抽象的,要实现一个接口也实现不了。
作者: zhouchao    时间: 2013-7-6 09:10
1.final  
final关键字的特点
    final可以修饰类,方法,变量。
    final修饰的类不可以被继承
    final修饰的方法不可以被覆盖
    final修饰的变量是一个常量,只能被赋值一次
    内部类只能访问被final修饰的局部变量
final修饰的类不可以被继承 final修饰的方法不可以被覆盖,所以不可以用来修饰抽象类
2.static
静态:static
用法:是一个修饰符。用于修饰成员(成员变量和成员函数)
修饰后的成员被单独提取出来 不在堆内存中  每个人都可以访问

当成员被静态修饰后,就多了一个调用方式,除了可以被对象调用外
还可以直接被类名调用,格式  类名.静态成员
而抽象类被静态修饰应该是可以的 但是由于抽象方法没有方法体 直接调用没有意义,所以没有意义
作者: 郑先明    时间: 2013-7-6 12:06
zhouchao 发表于 2013-7-6 09:10
1.final  
final关键字的特点
    final可以修饰类,方法,变量。

谢谢  你解释的最详细了!!
作者: 郑先明    时间: 2013-7-6 12:22
22期的斑竹怎么联系啊...也没看到QQ   斑竹看到帮我改下以解决
作者: 赵海洋    时间: 2013-7-6 18:20
郑先明 发表于 2013-7-6 12:22
22期的斑竹怎么联系啊...也没看到QQ   斑竹看到帮我改下以解决

版主们的qq在置顶的帖子里都能看到,如技术分加分细则里都有版主的qq。




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