黑马程序员-----接口

什么叫固定的?就是没有写就给你加上!!你不加阅读性差!


简单理解:当一个抽象类中的方法都是抽象的时候,这时可以将该抽象类用另外一种形式来定义和表示,那就是接口 interface。

被定义的接口编译生成的也是class字节码文件。

//定义接口用的是interface,而不是class


抽样类就创建子类去继承(部分覆盖)

而接口就创建子类去实现,为什么叫实现?因为接口里面都是抽象类,要实现里面全部的功能。(全部覆盖)

再说一遍:类与类之间是继承关系,类与接口之间是实现关系。

子类实现接口后调用方法。

实现方法没有方法体,子类同时覆盖掉接口方法,不存在不确定性。

子类如果不覆盖接口中的方法,子类自己就变成抽象类了!

接口的出现避免了单继承的局限性。



接口可以多继承,原因就是接口中的方法没有方法体!!


接口的特点:


凡是对外暴露的,都是接口~~!




首先犬类 和 导盲类,那个需要抽象继承?那个需要实现接口?

在我认为犬类应该是被继承的,因为它是所有犬科抽取出来的一个基类,而导盲是一个额外的一个功能(原本没有的),

而且基类中有很多的功能不需要覆盖可以直接调用使用!


然而为什么不直接把导盲这个功能直接放在导盲犬里面呢?打个比方,来个猪,猫,狼他们也许都会导盲呢?是不是每个都要定义一下?复用性就不高了!

况且生活中我们需要到导盲这个
功能的时候,是不是不管具体的物体,而是看它有没有这个功能!有就上呗~~!!没有不用你!!




笔记本电脑例子


/*
笔记本电脑使用。
为了扩展笔记本的功能,但日后出现什么功能设备不知道。

定义一个规则,只要日后出现的设备都符合这个规则就可以了。
规则在java中就是接口。

*/
interface USB// 暴露的规则。
{
	public void open();
	public void close();
}


class BookPC
{
	public static void main(String[] args)
	{
		useUSB(new UPan());//功能扩展了。
		useUSB(new UsbMouse());
	}

	//使用规则。
	public static void useUSB(USB u)//接口类型的引用,用于接收(指向)接口的子类对象。//USB u= new UPan();
	{
		if(u!=null)
		{
			u.open();
			u.close();
		}
	}
}
//一年后。------------------------------
//实现规则。

//这些设备和电脑的耦合性降低了。

class UPan implements USB
{
	public void open()
	{
		System.out.println("upan open");
	}
	public void close()
	{
		System.out.println("upan close");
	}

}


class UsbMouse implements USB
{
	public void open()
	{
		System.out.println("UsbMouse open");
	}
	public void close()
	{
		System.out.println("UsbMouse close");
	}

}








/*
class Mouse
{
}

class BookPC
{
	public static void main(String[] args)
	{
		useMouse(new Mouse());
	}
	public static void useMOuse(Mouse m)
	{
		m.open();
	}
	public static void useMOuse(Mouse m)
	{
		m.open();
	}
}
*/

练习过程中出现的错误:

传入子类对象的时候漏写括号~~~o(╯□╰)o~!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值