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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李跃达 中级黑马   /  2013-1-30 14:46  /  1652 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. abstract class Person{
  2. private abstract String newPreson ();//编译是这句报错,说什么类型错误,怎么回事?
  3. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

6 个回复

倒序浏览
因为抽象类不能被实例化,只有实现了它所有方法的子类才能被实例化,而你把方法用private私有修饰,子类就不能继承该方法了,继承的权限至少是peotected或者public,所以总结就是本身不能被实例化,方法又不能被继承,java是不允许这样无意义的定义的。

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
某个方法同时拥有 abstract 和 private 修饰符。这是不允许的,因为私有方法是从类内部访问的,但抽象方法是从类的外部继承的。

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
抽象方法或者说是抽象类将其他类中的共有部分抽取出来,简化代码提高扩展性,肯定是对外开放的
将抽象方法私有了  其他类如何去实现它呢?
回复 使用道具 举报
抽象类是不能实例化的,关键字是abstract ,不能实例化意思就是不能通过new关键字来创建实例,私有类是没有子类的,意思就是不能被继承,断子绝孙了,但是可以实例化。你现在用private修饰就表明它是能够实例化对象,你又用abstract修饰,表明它又不能实例化,这让JVM陷入困境,只能给你报错了。改进方法就是消除矛盾,去掉abstract或者把private该成public或protected

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
这么多人回答啊 我在补充一小点 newPreson 这样写到一块了肯定报错
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马