黑马程序员技术交流社区

标题: 抽象关键字abstract不能和private共存的原因? [打印本页]

作者: 静以修身    时间: 2013-8-17 22:53
标题: 抽象关键字abstract不能和private共存的原因?
本帖最后由 静以修身 于 2013-8-18 14:01 编辑

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


作者: 深知一生短暂    时间: 2013-8-17 23:18
本帖最后由 深知一生短暂 于 2013-8-17 23:20 编辑

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

作者: 静以修身    时间: 2013-8-17 23:32
邪恶飞猫 发表于 2013-8-17 23:14
在使用abstract关键字修饰抽象方法时不能使用private修饰,因为抽象方法必须被子类覆写,而如果使用了priva ...

但是比老师的视频里说只要子类中复写的方法的权限比父类中的被复写的方法的权限大的话就可以复写的啊

作者: 许云龙    时间: 2013-8-17 23:33
先抛开抽象不说,下面代码演示继承关系, 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");
        }
}


作者: 王松松    时间: 2013-8-18 00:09
其实,一个类中的成员如果定义为private,则是不想被外部直接访问,需要定义对外的方法访问私有成员。

与你一同进步。{:soso_e141:}
作者: 静以修身    时间: 2013-8-18 01:05
王松松 发表于 2013-8-18 00:09
其实,一个类中的成员如果定义为private,则是不想被外部直接访问,需要定义对外的方法访问私有成员。

与 ...

嗯嗯,学习了。私有的成员外界是不能访问的,因为对数据进行了封装。抽象类的成员函数被protected和public修饰的才能被子类所复写。

作者: 于驭龙    时间: 2013-8-18 09:55
举个例子: 你的钱 我能拿么  ..只有我看到你的钱...才知道..原来是假币..




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