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); } }
相关文章推荐
- java培训 2015-07-31
- Java学习之路:不走弯路,就是捷径
- Java反射机制
- 余弦相似度-java代码实现
- Ubuntu Eclipse CDT 使用math数学函数库:对×××未定义的引用
- Struts2中操作JSON
- struts2注解实现页面的跳转
- myeclipse 方法上加上@Override就报错
- JAVA基础一大堆0801抽象类+内部类局部类+异常
- java基础第六讲——抽象类、接口、内部类、常用类、异常、IO流
- Ubuntu 14 安装jdk8,MySql的安装卸载等一些常用的命令
- spring MVC之返回JSON数据(Spring3.0 MVC+Jackson+AJAX)
- java基础--面向对象
- java笔试三
- java笔试二
- JAVA入门基础文章2-类的概念(继续深入点)
- java笔试一
- java学习异常,常用类,接口等
- eclipse新建android工程提示android.support.v7错误的解决办法
- java集合类总结