java8改进的接口(二)

1.接口主要有如下用途:

1)定义变量,也可用于进行强制类型转换  

2)调用接口中定义的常量

3)被其他类实现


2.一个类可以实现一个或多个接口,实现使用implements关键字。注:一个类实现了接口以后,这个类必须实现接口里的全部抽象方法,否则,这个类就变为了抽象类。

public interface Output{
	int MAX_CACHE_LINE = 2;				//成员变量
	void out();							//定义一个抽象方法void
	void getdata(String msg);			//定义一个抽象方法getdata
	default 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)一个类只能有一个直接父类,但接口可以继承多个接口。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值