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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 付江涛 金牌黑马   /  2014-7-15 16:24  /  1008 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 付江涛 于 2014-7-17 16:28 编辑

在讲装饰和继承时,老师讲了一个MyReader的例子:
  1. MyReader//专门用于读取数据的类。
  2.         |--MyTextReader
  3.                 |--MyBufferTextReader
  4.         |--MyMediaReader
  5.                 |--MyBufferMediaReader
  6.         |--MyDataReader
  7.                 |--MyBufferDataReader
复制代码
通过简单优化:
  1. class MyBufferReader
  2. {
  3.         MyBufferReader(MyTextReader text)
  4.         {}
  5.         MyBufferReader(MyMediaReader media)
  6.         {}
  7. }
复制代码
扩展性很差。找到其参数的共同类型。通过多态,可以提高扩展性:
  1. class MyBufferReader extends MyReader //就是搞不懂这为什么要继承MyReader
  2. {
  3.         private MyReader r;
  4.         MyBufferReader(MyReader r)
  5.         {}
  6. }
复制代码

问题来了,MyBufferReader为什么要继承MyReader?如果不继承也没影响啊

而且上一课讲的PersonDemo例子中也没继承。
  1. class Person
  2. {
  3.         public void chifan()
  4.         {
  5.                 System.out.pritln("吃饭");
  6.         }
  7. }

  8. class SuperPerson //没继承
  9. {
  10.         private Person p;
  11.         SuperPerson(Prson p)
  12.         {
  13.                 this.p=p;
  14.         }
  15.         public void superChiFan()
  16.         {
  17.                 System.out.println("开胃酒");
  18.                 p.chifan();
  19.                 System.out.println("甜点");
  20.         }
  21. }
复制代码

搞不明白,为什么要继承



4 个回复

倒序浏览
看 JDK API 得知,BufferedReader 从 Reader 继承了两个方法(read和read…),如果不继承 Reader ,而又没有自己写一个,BufferedReader 就会少两个方法。
比如如果 Person 类有呼吸、走路、睡觉等等方法,如果 SuperPerson 不继承 Person ,就需要自己实现所有方法(即使他们跟 Person 完全一样而且所有 Person 子类都没有重写他们),否则就会出现 Person 会走路会睡觉会呼吸,而 Superperson 除了优雅地吃饭以外什么都不会…自己实现当然不如继承方便
回复 使用道具 举报
可以不继承,但是想用到Myreader的方法时就要自己再写,麻烦。
回复 使用道具 举报
icris 发表于 2014-7-15 23:06
看 JDK API 得知,BufferedReader 从 Reader 继承了两个方法(read和read…),如果不继承 Reader ,而又没 ...

恩 懂了 继承就是为了可以直接调用父类的方法,直接super就行了
回复 使用道具 举报
wisely 发表于 2014-7-15 23:10
可以不继承,但是想用到Myreader的方法时就要自己再写,麻烦。

恩恩  明白了  就是可以直接super父类方法吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马