十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
你定义了Monitor类,它实现了接口中唯一的一个抽象函数,所以这个Monitor类就是一个普通的类了,不能称之为抽象类。这样的Monitor类是可以实例化的。
创新互联建站于2013年创立,是专业互联网技术服务公司,拥有项目网站设计、成都网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元阳信做网站,已为上家服务,为阳信各地企业和个人服务,联系电话:18982081108
而抽象类是不能实例化的。比如假如一个接口中有多个抽象函数,你只实现了其中一个抽象函数,那么这样一个类就是抽象类,依然不能实例化。只有实现了接口中所有抽象函数,才可以被实例化。
这就是为什么有适配器的原因。例如在WindowListener中,有多个抽象函数;如果直接实现它,那么你的类里就要实现全部的这些函数;而WindowAdapter采用空实现的方法实现了WindowListener中全部抽象函数,我们的类继承于WindowAdapter,就相当于实现了WindowListener中全部抽象函数,再重写我们原本需要实现的函数就可以了。
lst1.addMouseListener(new MouseAdapter(){代码块;})
MouseAdapter()是个 适配器 里面帮你实现了MouseListener()的所有方法
所以在这里你只要对你需要的事件重写就可以了,不用写你用不到的方法
lstq.addMouseListener(this); 其中的 this 是继承MouseListener类的 一个类 里面 实现了 MouseListener 类里的 所有方法,即使是空实现 你也 必须 写出来 这 就是 2者 的 区别~~
懂了么~
比如我要监听1234这个端口,代码如下:
String ip = "127.0.0.1";
int port = 1234;
try {
Socket socket = new Socket(ip, port);
socket.setSoTimeout(5539900);
java.io.OutputStream out = socket.getOutputStream();
byte[] date = "hello world".getBytes();
out.write(data);
out.flush();
byte[] buffer = new byte[1024];
int len = -1;
java.io.FileOutputStream fout = new java.io.FileOutputStream(
"d:/response.txt");
java.io.ByteArrayOutputStream bout = new java.io.ByteArrayOutputStream();
java.io.InputStream in = socket.getInputStream();
while ((len = in.read(buffer, 0, buffer.length)) 0) {
bout.write(buffer, 0, len);
}
in.close();
bout.flush();
bout.close();
byte[] rdata = bout.toByteArray();
System.out.println(new String(rdata));
fout.write(rdata);
fout.flush();
fout.close();
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
服务器端的
ServerSocket ss = new ServerSocket(1234);
Socket socket=null;
BufferedReader in;
PrintWriter out;
while (true) {
socket = ss.accept();
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream(),true);
String line = in.readLine();
out.println("you input is :" + line);
out.close();
in.close();
socket.close();
}
实际上就是断点续传。思路是在开始按钮点击的时候访问(/新建)文件,移动文件指针到上次记录的位置,下载的时候在HttpURLConnection类下有一个setRequestProperties("range","byte=xxx")。
点击暂停的时候记录已经下载的字节数,就是上面的xxx变量。
具体看java IO流,RandAccessFile类,HTTP协议
你直接写一个方法A,在你要监听的那根类的方法B中调用方法A,这样B每次执行当然就会调用A了。