对于多态的设计?

蓝明乐 2012-04-11 04:26:08
My my = new Me();
my.test() ;这个调用My类的test方法;
如果子类没有重写,调用的只是父类的。再如果子类重写了还是声明为private,(my.test()可以编译)调用还是父类的test方法;
再如果父类是抽象类(test为抽象方法),而子类必须重写(调用是子类的test方法),如果声明的是private,编译还是可以通过,但是会抛出异常,个人感觉到这样做会做出封装更好的效果(限制了子类的方法),但是复杂会增加,而扩展、可读都会降低,那么这样到底有什么好处?谁给个例子说明啊!?
...全文
59 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
蓝明乐 2012-04-11
  • 打赏
  • 举报
回复
回1,2楼,多态这些基本原理我懂的啊!可我特意这样写,如果声明private那样封装得不是更好吗?同时还可以说java是有指针的,调用是先指向父类,而在父类中检查子类有没有重写或重载,如果有的,那么就叫调用那个类的引用指向子类,当然如果子类型为private,它子向一个不能访问的,所以它自己转移指针指到父类,而我上面说的父类是抽象类时,却抛出错误,也正好说明这个啊!可是谁有办法更好设计出子类呢?所以来求助!
Harryfin 2012-04-11
  • 打赏
  • 举报
回复
你想想呀,如果你降低了父类的可见性,你在实际调用的时候,你还能调用到那个方法吗?

因此JAVA为了不出错,就改成了调用父类的方法而已

-----------------------------

不过我觉得JAVA这样处理确实不够好,团队开发中难免容易出现点深层的问题。
安特矮油 2012-04-11
  • 打赏
  • 举报
回复
重写方法的时候不能缩小访问范围的,所以重新的时候不能声明为private的。

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧