java8改进的接口(二)
来源:互联网 发布:linux目录结构命令 编辑:程序博客网 时间:2024/04/29 16:44
1.接口主要有如下用途:
1)定义变量,也可用于进行强制类型转换 ①
2)调用接口中定义的常量
3)被其他类实现
2.一个类可以实现一个或多个接口,实现使用implements关键字。注:一个类实现了接口以后,这个类必须实现接口里的全部抽象方法,否则,这个类就变为了抽象类。
public interface Output{int MAX_CACHE_LINE = 2;//成员变量void out();//定义一个抽象方法voidvoid getdata(String msg);//定义一个抽象方法getdatadefault void print(String...msgs){//定义一个默认方法print。这个默认方法的作用是打印数组for(String msg:msgs){System.out.println(msg);}}default void test(){//定义一个默认方法System.out.println("Peniess");}}
interface Product{int getProductTime();//定义一个抽象方法}public class Printer implements Output,Product{private String[] printData = new String[MAX_CACHE_LINE];//定义一个数组成员变量private int dataNum;public void out(){//重写void方法while(dataNum>0){System.out.println("打印机打印"+printData[0]);//每次都打印第一个数组System.arraycopy(printData,1,printData,0,--dataNum);//每打印一次数组都向左移动一位,然后减1数组长度}}public void getdata(String msg){//重写getdata方法if(dataNum>=MAX_CACHE_LINE){System.out.println("输出队列已满,添加失败");}else{printdata[dataNum++] = msg;//每次都往printdata数组里面保存一个变量,并把数组长度加1。}}public int getProductTime(){//重写getProductTime方法return 45;}public static void main(String[] args){Output o = new Printer();//创建Printer的对象并把它引用为Output 体现了①o.getdata("算法导论");o.getdata("thinking in java");o.out();o.getdata("算法");o.getdata("算法珠玑");o.out();o.print("孙悟空","猪八戒","白骨精");o.test();Product p = new Printer();//创建Printer的对象并把它引用为Product。体现了多态System.out.println(p.getProductTime());Object obj = p;//向上转型Object obj2 = o;}}
注:实现接口方法时,必须使用public访问控制修饰符。(因为接口方法都是public修饰,重写的方法只能和public相等或更大
3.接口和抽象类
1)接口和抽象类都不能被实例化,它们都位于继承树的顶端,用于被其他类实现和继承。
2)接口和抽象类都可以包含抽象方法,如果定义子类为普通类,那么都要实现这些方法,否则子类要被定义为抽象类。
4.接口和抽象类的不同
1)接口只能有抽象方法,类方法和默认方法,而抽象类完全可以包含普通方法。
2)接口里只能定义静态常量,不能定义普通成员变量,而抽象类既可以定义静态常量,也可以定义普通成员变量。(常量——final修饰)
3)接口不包含构造器,但抽象类可以包含构造器。(抽象类的构造器不是用于创建本类实例,而是用来被子类调用)
4)接口里不能有初始化块。
5)一个类只能有一个直接父类,但接口可以继承多个接口。
0 0
- java8改进的接口(二)
- java8改进的接口
- java8改进的接口:
- Java8改进的接口
- java8改进的接口(一)
- Java8 Collection接口源码阅读(二)
- java8中concurrentHashmap的改进
- java8接口默认方法二
- 二、Java8的默认方法和静态接口方法
- java8新增特性(二)----函数式接口(Functional)
- java8入门(二) --::和默认函数式接口
- Java8的改进和新的特性
- java8中对ConcurrentHashMap的改进
- Java8对读写锁的改进:StampedLock
- java8改进的HashMap和Hashtable类
- JAVA8 JDK 对字符串连接的改进
- java8中HashMap相对于java7的改进
- java8 函数式接口(FunctionalInterface) [二]
- 选择排序之直接选择(Java)
- 行为型模式-模版方法(template_method)
- 顺时针螺旋递增矩阵
- 循坏队列
- POJ3694-Network(LCA+边联通分量+桥)
- java8改进的接口(二)
- pg学习_基本表定义_约束关系
- 第一次接触C语言
- phpmyadmin报“配置文件权限错误,不应任何用户都能修改!”错误
- Android的线程和线程池
- Docker报错 WARNING: IPv4 forwarding is disabled. Networking will not work.
- 03网络请求_02_Volley_2_加载网络图片
- Java中的Copy-On-Write容器
- JAVA 多线程 synchronized与ReentrantLock