黑马程序员技术交流社区
标题:
装饰类
[打印本页]
作者:
凝聚
时间:
2013-10-23 09:41
标题:
装饰类
本帖最后由 凝聚 于 2013-10-23 10:44 编辑
package Nineteen;
import java.io.*;
public class eight {
public static void main(String[] args)throws IOException
{
FileReader fr=new FileReader("my.doc");
MyBufferedReader1 mybr=new MyBufferedReader1(fr);
String line=null;
while((line=mybr.myReadLine())!=null)
{
System.out.println(line);
}
mybr.myClose1();
}
}
class MyBufferedReader1 extends Reader
{
private Reader r;//FileReader去掉File装饰一组对象(Reader)
MyBufferedReader1(Reader r)
{
this.r=r;
}
public String myReadLine()throws IOException
{
StringBuilder sb=new StringBuilder();
int ch=0;
while((ch=r.read())!=-1)
{
if(ch=='\r')
continue;
if (ch=='\n')
return sb.toString();
else
sb.append((char)ch);
}
if(sb.length()!=0)
return sb.toString();/*abc0,abc1,abc2,abc3,abc4如果没有这句话abc0,abc1,abc2,abc3*/
return null;
}
/*覆盖Reader类中的抽象方法*/
public void myClose1()throws IOException
{
r.close();
}
public int read(char[] ch,int off,int len)throws IOException
{
return r.read(ch,off,len);
}
/*
public void close()throws IOException
{
r.close();
}
*/
}
这段代码中class MyBufferedReader1 extends Reader这句话标有红线,但调试能通过。是怎么回事。
作者:
深情小建
时间:
2013-10-23 10:11
The type MyBufferedReader1 must implement the inherited abstract method Reader.close()
MyBufferedReader1类必须实现继承的抽象方法 Reader.close()
看过你代码,你的close()方法 被你自定义了myClose1(),,这是不对的,而应该沿用父类的方法名。
修改后的代码如下:
package Nineteen;
import java.io.*;
public class eight {
public static void main(String[] args)throws IOException
{
FileReader fr=new FileReader("my.doc");
MyBufferedReader1 mybr=new MyBufferedReader1(fr);
String line=null;
while((line=mybr.myReadLine())!=null)
{
System.out.println(line);
}
mybr.close();
}
}
class MyBufferedReader1 extends Reader
{
private Reader r;//FileReader去掉File装饰一组对象(Reader)
MyBufferedReader1(Reader r)
{
this.r=r;
}
public String myReadLine()throws IOException
{
StringBuilder sb=new StringBuilder();
int ch=0;
while((ch=r.read())!=-1)
{
if(ch=='\r')
continue;
if (ch=='\n')
return sb.toString();
else
sb.append((char)ch);
}
if(sb.length()!=0)
return sb.toString();/*abc0,abc1,abc2,abc3,abc4如果没有这句话abc0,abc1,abc2,abc3*/
return null;
}
/*覆盖Reader类中的抽象方法*/
public void close()throws IOException
{
r.close();
}
public int read(char[] ch,int off,int len)throws IOException
{
return r.read(ch,off,len);
}
/*
public void close()throws IOException
{
r.close();
}
*/
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2