黑马程序员技术交流社区

标题: 父类构造函数在子类中的存在 [打印本页]

作者: 石好强    时间: 2012-4-13 00:12
标题: 父类构造函数在子类中的存在
本帖最后由 石好强 于 2012-4-13 06:08 编辑


  1. import java.io.*;
  2. class MyLineNumberReader extends BufferedReader
  3. {

  4. private FileReader fr;

  5. MyLineNumberReader(FileReader fr)
  6. {

  7. super(in){}
  8. this.fr = fr;

  9. }

  10. public void MysetLineNumber(int num)
  11. {
  12. int lnum = num;
  13. int ch = 0;

  14. while((ch=fr.read())!=-1)
  15. {
  16. if((char)ch=='\r')
  17. lnum++;
  18. }

  19. }

  20. public int MygetLineNumber()
  21. {
  22. int ch = 0;
  23. int lnum = 1;
  24. while((ch=fr.read())!=-1)
  25. {
  26. if((char)ch=='\r')
  27. lnum++;
  28. }

  29. }

  30. public void close() throws IOException
  31. {
  32. fr.close();
  33. }

  34. public int read(char[] cbuf,int off,int len) throws IOException
  35. {
  36. fr.read(cbuf,off,len);

  37. }



  38. }




  39. class MyLineNumberReaderDemo
  40. {
  41. public static void main(String[] args)
  42. {
  43. FileReader fr = new FileReader("PersonDemo.java");

  44. MyLineNumberReader mlnr = new MyLineNumberReader(fr);

  45. String line = null;
  46. while((line = mlnr.readLine())!=null)
  47. {
  48. System.out.println(mlnr.MygetLineNumber()+":"+line);
  49. }


  50. }
  51. }

复制代码
报错:

D:\java1203\day19>javac MyLineNumberReaderDemo.java
MyLineNumberReaderDemo.java:12: 需要 ';'
                super(in){}
                         ^
1 错误


请问这个父类的构造函数应该怎么写啊?

改成super(in);
仍然有报错,有高人帮忙改下代码吗,看看这个代码到底问题出在哪了。
作者: 蒋亮    时间: 2012-4-13 00:44
super(int);就行了啊,你后面加了大括号是什么意思?
作者: 孙国军    时间: 2012-4-13 00:56
super(in){}

this.fr = fr;


直接super(in);就可以了;


作者: 邓飞飞    时间: 2012-4-13 07:05
03.import java.io.*;

04.class MyLineNumberReader extends BufferedReader

05.{

06.

07.private FileReader fr;

08.

09.MyLineNumberReader(FileReader fr)

10.{

11.

12.super(in){}//改为super(in)就行了,固定格式记住就行。

13.this.fr = fr;

14.

15.}

16.

17.public void MysetLineNumber(int num)

18.{

19.int lnum = num;

20.int ch = 0;

21.

22.while((ch=fr.read())!=-1)

23.{

24.if((char)ch=='\r')

25.lnum++;

26.}

27.

28.}

29.

30.public int MygetLineNumber()

31.{

32.int ch = 0;

33.int lnum = 1;

34.while((ch=fr.read())!=-1)

35.{

36.if((char)ch=='\r')

37.lnum++;

38.}

39.

40.}

41.

42.public void close() throws IOException

43.{

44.fr.close();

45.}

46.

47.public int read(char[] cbuf,int off,int len) throws IOException

48.{

49.fr.read(cbuf,off,len);

50.

51.}

52.

53.

54.

55.}

56.

57.

58.

59.

60.class MyLineNumberReaderDemo

61.{

62.public static void main(String[] args)

63.{

64.FileReader fr = new FileReader("PersonDemo.java");

65.

66.MyLineNumberReader mlnr = new MyLineNumberReader(fr);

67.

68.String line = null;

69.while((line = mlnr.readLine())!=null)

70.{

71.System.out.println(mlnr.MygetLineNumber()+":"+line);

72.}

73.

74.

75.}
作者: 未长法    时间: 2012-4-13 08:28
MyLineNumberReader 继承了BufferedReader ,所以子类可以显式的调用父类的构造函数,super(in);就可以完成。
作者: 黑马-刘昌文    时间: 2012-4-13 10:13
12,13行代码改为 super(fr);





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