您的位置:首页 > 编程语言 > Java开发

JAVA基础一大堆0801接口+匿名类+IO流

2015-08-01 21:21 681 查看

IO流

package io;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class Text {

public static void main(String[] args) {
File file=new File("d://11.txt");//建立文件对象
if(!file.exists()){             //检测是否存在文件
try {
file.createNewFile();   //没有文件的话,产生文件
} catch (IOException e) {

e.printStackTrace();
}
}

//写入文件内容
String words="╮(╯▽╰)╭";
try {
byte[] array=words.getBytes();//将字符串转换成字节组
FileOutputStream fos=new FileOutputStream(file);
fos.write(array);
fos.flush();//刷新此输出流并强制写出所有缓冲的输出字节
fos.close();//关闭此输出流并释放与此流有关的所有系统资源
System.out.println("写入文档完成");
} catch (FileNotFoundException e) {

e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

//读内容
byte[] array=new byte[1024];
try {
FileInputStream fis=new FileInputStream(file);
int num=fis.read(array);
while(num!=-1){
System.out.println(new String(array,0,num));
num=fis.read(array);
}
fis.close();
} catch (FileNotFoundException e) {

e.printStackTrace();
} catch (IOException e) {

e.printStackTrace();
}
}

}




匿名内部类

  只要一个类是抽象的或是一个接口,那么其子类中的方法都可以使用匿名内部类来实现

  最常用的情况就是在多线程的实现上,因为要实现多线程必须继承Thread类或是继承Runnable接口

package print;

import org.omg.Messaging.SyncScopeHelper;

public class AnonymousClass {
public static void main(String[] args){
Paper paper=new Paper(){
public String getPaperSize(){
return "B5";
}
};//这是一条语句,必须加分号。匿名内部类,当只是用一次这个对象的时候使用
//因为这个类没有名字,所以只能创建一次对象。
System.out.println(paper.getPaperSize());
Paper paper1=new Paper(){
public String getPaperSize(){
return "B5";                //方法无法调用?因为没有类名
}
};//主要是在观察者模式里用到,在Android主要是事件
System.out.println(paper1==paper);//都是NEW的对象,不相等
System.out.println(paper1.equals(paper));//类不一样,不相等
}

}




接口

面向接口:全部都是抽象方法的类,省略abstract,不能直接引用,必须定义具体的类来供他引用
定义接口:interface
继承:多重实现(implements 比如说一个人可以有多种能力)
类的话是单继承,就是一个孩子只有一个爹
面向接口变成  接口的引用指向实现此接口的对象


package print;
//打印机接口
public interface Print {
public void print(Paper paper,Ink ink);
}

package print;
//打印机工厂类
public class PrintFactory {
public static Print printChooser(){
Print print=new PrintHP();
return print;
}
}

//打印机类1
public class PrintHP implements Print {

@Override
public void print(Paper paper, Ink ink) {

System.out.println("在"+paper.getPaperSize()+"上面用"+ink.getInkColor()+"打印"+"<惠普打印机");
}
}
//打印机类2
public class PrintOther implements Print{

@Override
public void print(Paper paper, Ink ink) {
System.out.println("在"+paper.getPaperSize()+"上面用"+ink.getInkColor()+"打印"+"<其他打印机");
}
}
package print;
//纸张接口
public interface Paper {
char[] getPaperSize = null;

public String getPaperSize();
}
//纸张类1
public class PaperBeiJing implements Paper{
@Override
public String getPaperSize() {
// TODO Auto-generated method stub
return "A4+B5";
}

}
//纸张类2
public class PaperShangHai implements Paper{

@Override
public String getPaperSize() {
// TODO Auto-generated method stub
return "A4";
}

}
//纸张制造厂类(中间类,便于以后不动测试类)
public class PaperFactor {
//返回值类型是Paper,理解上int、String、
public static Paper paperCreater(){
Paper paper=new PaperShangHai();
return paper;
//  return new PaperShangHai();
}
}

//墨接口
public interface Ink {
public String getInkColor();
}
//墨工厂类
public class InkFactor {
public static Ink inkChooser(){
Ink ink=new InkOther();
return ink;
}
}
//墨类1
public class InkQD implements Ink {

@Override
public String getInkColor() {
// TODO Auto-generated method stub
return "蓝色墨";
}
}
//墨类2
public class InkOther implements Ink {
@Override
public String getInkColor() {
// TODO Auto-generated method stub
return "其他颜色墨";
}
}
//测试类
public class Text {

public static void main(String[] args) {
//利用static间接选择纸张墨水打印机,优点是修改具体纸张墨水打印机属性时不必修改主函数
Paper paper1=PaperFactor.paperCreater();
Ink ink1=InkFactor.inkChooser();
Print print1=PrintFactory.printChooser();

//直接创建对象
Paper paper=new PaperBeiJing();
Ink ink=new InkQD();
Print print=new PrintOther();
//打印
print.print(paper1, ink1);
}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: