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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 静以修身 于 2013-8-18 14:01 编辑

为什么抽象关键字abstract不能和private共存,能举个例子么?如果抽象类中的抽象方法用private修饰,子类中
覆盖的时候权限比它大不久可以复写么?从这个例子看应该可以共存把!求解释为什么不能共存?{:soso_e132:}

评分

参与人数 1技术分 +1 收起 理由
薛鹏鹏 + 1

查看全部评分

6 个回复

倒序浏览
本帖最后由 深知一生短暂 于 2013-8-17 23:20 编辑

这个很明显的其实
1.private 关键字的访问权限是本类的,所有子类 ,外部均不能访问。
2.abstract关键字定义成员方法目的就是方法不具体,需要子类去复写,并且将其具体化。
3.private和 abstract 关键字无法共存,假如共存了,子类是没有权限去复写抽象父类的方法的。
所以失去了意义。因此也无法共存了。
另外,抽象父类中假如成员方法不是抽象方法,是能够适应private关键字了,并且也能够定义具体的公开的实体方法。
关键是不能在抽象方法中存在private关键字!

评分

参与人数 1技术分 +1 收起 理由
薛鹏鹏 + 1

查看全部评分

回复 使用道具 举报
邪恶飞猫 发表于 2013-8-17 23:14
在使用abstract关键字修饰抽象方法时不能使用private修饰,因为抽象方法必须被子类覆写,而如果使用了priva ...

但是比老师的视频里说只要子类中复写的方法的权限比父类中的被复写的方法的权限大的话就可以复写的啊
回复 使用道具 举报
先抛开抽象不说,下面代码演示继承关系, Zi继承了Fu,

子类中有公共的show方法 ,父类中有私有的show方法,你说子类中的show方法有没有覆盖父类中的show方法?
答案是没有,因为父类中的show方法子类根本看不见,
同样,抽象的父类也是一个道理,既然抽象就必须复写,既然私有就看不见无法复写,这样的存在时没有意义的
所以java不允许他的存在

class Fu{
        private void show(){
                System.out.println("is Fu");
        }
}
class Zi extends Fu{
        public void show(){
                System.out.println("is Zi");
        }
}

评分

参与人数 1技术分 +1 收起 理由
薛鹏鹏 + 1

查看全部评分

回复 使用道具 举报
其实,一个类中的成员如果定义为private,则是不想被外部直接访问,需要定义对外的方法访问私有成员。

与你一同进步。{:soso_e141:}
回复 使用道具 举报
王松松 发表于 2013-8-18 00:09
其实,一个类中的成员如果定义为private,则是不想被外部直接访问,需要定义对外的方法访问私有成员。

与 ...

嗯嗯,学习了。私有的成员外界是不能访问的,因为对数据进行了封装。抽象类的成员函数被protected和public修饰的才能被子类所复写。
回复 使用道具 举报
举个例子: 你的钱 我能拿么  ..只有我看到你的钱...才知道..原来是假币..
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马