黑马程序员技术交流社区

标题: static 和 abstract的问题 [打印本页]

作者: LuckyQS    时间: 2013-12-31 14:34
标题: static 和 abstract的问题
本帖最后由 LuckyQS 于 2014-1-2 09:31 编辑

我想问一下,abstract和static为什么不能放在一起,abstract类也是类,为什么不能用static修饰?
作者: 程玉习    时间: 2013-12-31 15:50
static 方法是类方法,它是不允许子类复写(override),而abstract方法是没有实现的方法,是必须由子类来复写的,所以就产生了矛盾
作者: Zenith    时间: 2013-12-31 15:58
abstract是抽象的,不能被实例化,是一个还没有实现的类.而static是静态的需要用类名调用.所以不能呢个
作者: daoyua    时间: 2013-12-31 16:14
abstract修饰的函数是没有对象的调用的,是空壳不存在的,需要继承后实现后才有一个新的可以调用的生命周期,,static修饰的函数会在类建立的时候就存在,可以调用的,一个实体,是一个虚体,怎么能在一起
作者: daoyua    时间: 2013-12-31 16:20
给你举个例子class A{ abstract void show();}  
class B{static void show(){System.out.println("test");}}
其中类A中的函数show是没法用的,没方法体,类A也没法建立对象调用,而类B中的SHOW在编译的时候show()就可以通过类名调用或者建立对象调用,如果把abstract和static弄到一起就矛盾了,你试试弄到一起该怎么用?
作者: 段光宇    时间: 2013-12-31 16:30
abstract是抽象类,它本身不能够实例化,它修饰的类的意义就是被继承,自身没有可供运行的方法。
而static修饰的函数随着类的建立而运行,你把static和abstract放在一起,肯定自相矛盾。
作者: love~陌    时间: 2013-12-31 19:17
二者同样是修饰类的,但static是静态修饰符,程序运行的时候他就存在了,而abstract是用来描述抽象类的,是需要其子类来复写的,在这时候他的生命周期才开始。

我还真没把他们弄到一起试过
作者: 淡淡de烟草味    时间: 2013-12-31 19:58
abstract抽象类中也不能和fianl,private.这三个关键字共存,




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