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

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);
    }
}

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值