黑马程序员技术交流社区

标题: 装饰设计模式问题 [打印本页]

作者: 毛恩奇    时间: 2013-7-6 02:08
标题: 装饰设计模式问题
本帖最后由 毛恩奇 于 2013-7-6 11:24 编辑
  1. import java.io.BufferedReader;
  2. import java.io.FileReader;
  3. import java.io.IOException;
  4. class MyQuotBufferedReader extends BufferedReader{
  5. BufferedReader b;
  6. public MyQuotBufferedReader(BufferedReader b){
  7. super(b);
  8. this.b=b;
  9. }
  10. public String readLine() throws IOException{
  11. String line=super.readLine();????
  12. if(line==null){
  13. return null;
  14. }
  15. return "\""+line+"\"";//每一行加双引号
  16. }
  17. }
  18. class MyNumBufferedReader extends BufferedReader{
  19. int count=1;
  20. BufferedReader b;
  21. public MyNumBufferedReader(BufferedReader b){
  22. super(b);
  23. this.b=b;
  24. }
  25. public String readLine() throws IOException{
  26. String line=super.readLine();//用super无法打印出引号,只有数字????????????????????????
  27. if(line==null){
  28. return null;
  29. }
  30. return count+++line;//每一行前面标行号
  31. }
  32. }
  33. public class Demo5 {
  34. public static void main(String[] args) throws IOException {
  35. MyNumBufferedReader mqr=new MyNumBufferedReader(new MyQuotBufferedReader(new BufferedReader(new FileReader("d:\\111.txt"))));
  36. String line=null;
  37. while((line=mqr.readLine())!=null){
  38. System.out.println(line);
  39. }
  40. mqr.close();
  41. }
  42. }
复制代码
以上是装饰设计模式代码,为什么  MyNumBufferedReader继承BufferedReader后,复写的时候调用super.readLine()和b.readLine()效果不一样,用super的时候只有行号没有我要的引号,用b.readLine()时才有,用super和b调用有什么区别啊,构造函数那里this.b=b有点多余吧   直接调用父类的构造函数就行了啊!!!

作者: 草貌路飞    时间: 2013-7-6 03:59
自定义的类里面都保存了BufferedRead类型引用了,不必在通过super调用父类中的readLine();可以直接用b.readLine()就行了。而且如果你是用super.readLine();最外层MyNumBufferedReader中调用的super.readLine()还是BufferedReader的,而不是MyQuotBufferedReader的readLine()方法;因为它继承的是BufferedReader,所以super调用的是BufferedReader的readLine();
作者: 毛恩奇    时间: 2013-7-6 11:21
草貌路飞 发表于 2013-7-6 03:59
自定义的类里面都保存了BufferedRead类型引用了,不必在通过super调用父类中的readLine();可以直接用b.read ...

哦哦,明白了,我晕,学到后面前面最基础的都糊涂了,谢谢
作者: 草貌路飞    时间: 2013-7-6 11:26
毛恩奇 发表于 2013-7-6 11:21
哦哦,明白了,我晕,学到后面前面最基础的都糊涂了,谢谢

不谢..我刚好在看前面的..




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