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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© LuckyQS 中级黑马   /  2013-12-31 14:34  /  1716 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 LuckyQS 于 2014-1-2 09:31 编辑

我想问一下,abstract和static为什么不能放在一起,abstract类也是类,为什么不能用static修饰?

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

7 个回复

倒序浏览
static 方法是类方法,它是不允许子类复写(override),而abstract方法是没有实现的方法,是必须由子类来复写的,所以就产生了矛盾
回复 使用道具 举报
abstract是抽象的,不能被实例化,是一个还没有实现的类.而static是静态的需要用类名调用.所以不能呢个
回复 使用道具 举报
abstract修饰的函数是没有对象的调用的,是空壳不存在的,需要继承后实现后才有一个新的可以调用的生命周期,,static修饰的函数会在类建立的时候就存在,可以调用的,一个实体,是一个虚体,怎么能在一起

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
给你举个例子class A{ abstract void show();}  
class B{static void show(){System.out.println("test");}}
其中类A中的函数show是没法用的,没方法体,类A也没法建立对象调用,而类B中的SHOW在编译的时候show()就可以通过类名调用或者建立对象调用,如果把abstract和static弄到一起就矛盾了,你试试弄到一起该怎么用?

评分

参与人数 1黑马币 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
abstract是抽象类,它本身不能够实例化,它修饰的类的意义就是被继承,自身没有可供运行的方法。
而static修饰的函数随着类的建立而运行,你把static和abstract放在一起,肯定自相矛盾。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
二者同样是修饰类的,但static是静态修饰符,程序运行的时候他就存在了,而abstract是用来描述抽象类的,是需要其子类来复写的,在这时候他的生命周期才开始。

我还真没把他们弄到一起试过

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
abstract抽象类中也不能和fianl,private.这三个关键字共存,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马