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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lindegen 中级黑马   /  2014-6-20 14:36  /  8352 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 lindegen 于 2014-6-23 17:47 编辑

如题,求大神解惑 举个栗子什么的最喜欢了:loveliness:

7 个回复

倒序浏览
静态方法主要主为了便于调用,可以不过创建实例对象而通过类来访问
抽象方法没有方法体,直接通过类去调用没有意义

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
一个方法体没内容的方法定义成静态没有意义
回复 使用道具 举报
西门吹风 发表于 2014-6-20 14:53
静态方法主要主为了便于调用,可以不过创建实例对象而通过类来访问
抽象方法没有方法体,直接通过类去调用 ...

除了没有意义之外呢,编译的时候会出错哇
回复 使用道具 举报
抽象主要为了子类复写,静态与子类无关.
回复 使用道具 举报
1. 抽象方法不能实现
2.static方法独立于任何实例,因此static方法必须被实现

所以抽象方法不能定义成static
回复 使用道具 举报
就好像接口中的方法,默认是 public abstract 修饰的。抽象类,默认是被 abstract 修饰的 ,前面的权限修饰可以自己定义。所以就不要再想着 在他前面加写别的东西了,都是没有意义的,要不然也不会那样规定。
回复 使用道具 举报
简单分析一哈就知道,这个逻辑上就是矛盾的
抽象方法没有具体实现,只是抽象出来作为一个方法放在那里,而运行时会根据子类的不同,实际调用的是子类的方法,这里主要是用到了多态,为的是方便将来维护。
凡是用static修饰的都属于类本身,应该由类来调用,当然在Java中实例也可以调用,对于这一点,其实很多人认为是不妥的,IDE也会给一个警告,告诉你应该用类来调用。
那么问题来了:
假如抽象方法是可以用static修饰的,直接用类来调用了,运行时肯定不走子类了,这样失去了多态的意义,无法进行维护扩展的,再说了,连方法体都木有,怎么执行呢,所以,从语言设计者的角度来看,这种思路就是不通的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马