笔记Day15

目录

1、接口

2、举例


1、接口

(1)概念:接口是一个特殊的抽象类

(2)接口的使用

1)接口中的抽象方法修饰符默认为public abstract,在定义方法的时候public abstract可以不写

2)接口是一个特殊的抽象类,不能实例化

3)接口中的变量都是静态常量

4)类实现接口通过implements关键字实现

5)一个类实现一个接口,该类中必须将接口中的方法全部重写,如果不重写接口中的方法,就需要将类定义为抽象类

6)一个类可以实现多个接口,多个接口之间使用,隔开

7)类与类之间是继承关系,一个类只能继承一个父类

8)类与接口之间是实现关系,一个类可以实现多个接口

9)接口与接口之间是继承关系,一个接口可以继承多个接口

10)接口本身一旦制定,就不允许随意修改

2、举例

1)例1:

Door抽象类:

public abstract class Door {
	// 定义开门的功能
	public abstract void openDoor();
	// 定义关门的功能
	public abstract void closeDoor();
}

Lock接口:

public interface Lock {
	// 定义开锁的功能
	public abstract void openLock();
	// 定义上锁的功能
	void closELock(); 
}

TakePhoto接口:

public interface TakePhoto {
	void look();
}

FangDaoDoor类:

public class FangDaoDoor extends Door implements Lock,TakePhoto {
	@Override
	public void openDoor() {
		System.out.println("推门实现开门......");
	}
	@Override
	public void closeDoor() {
		System.out.println("拉门实现关门......");
	}
	@Override
	public void openLock() {
		System.out.println("左转3圈,开锁成功.....");
	}
	@Override
	public void closELock() {
		System.out.println("右转3圈,上锁成功......");
	}
	@Override
	public void look() {
		System.out.println("咔嚓,拍照成功......");
	}
}

Test类:

public class Test {
	public static void main(String[] args) {
		//创建FangDaoDoor类对象
		FangDaoDoor fdd = new FangDaoDoor();
		fdd.closeDoor();
		fdd.closELock();
		fdd.look();
		System.out.println("出去玩了2小时......");
		fdd.openLock();
		fdd.look();
		fdd.openDoor();
	}
}

2)例2:

USB抽象类:

public interface USB {
	//接口本身是不具备功能,接口的功能是通过方法来体现的
	//定义提供电能的方法
	void dian();
	
	//定义传输数据的方法
	void data();
}

实现USB接口的USBUFengSan类:

public class USBFengSan implements USB {
	@Override
	public void dian() {
		System.out.println("获取电能,风扇开始转动");
	}
	@Override
	public void data() {
		//USB风扇不需要传输数据,那么在该方法内不需要具体的实现
	}
}

实现USB接口的USBMouse类:

public class USBMouse implements USB {
	@Override
	public void dian() {
		System.out.println("鼠标获取电能,开始工作.....");

	}
	@Override
	public void data() {
		System.out.println("鼠标连接接口,开始传输数据.....");

	}
	public void test(){
		System.out.println("我是USBMouse类里独有的方法test()");
	}
}

实现USB接口的USBUPan类:

public class USBUPan implements USB {
	@Override
	public void dian() {
		System.out.println("U盘获取电能,开始工作....");
	}
	@Override
	public void data() {
		System.out.println("U盘连接接口,传输数据....");
	}
}

Test类:

public class Test {
	public static void main(String[] args) {
		USBFengSan ufs = new USBFengSan();
		ufs.dian();
		ufs.data();
		//向上转型:父类的引用(接口)指向子类的实例
		USB usb = new USBMouse();
		usb.dian();
		usb.data();
		//向下转型:子类的引用指向父类的实例
		if(usb instanceof USBMouse){
			USBMouse  usm = (USBMouse)usb;
			usm.test();
		}
		usb = new USBUPan();
		usb.dian();
		usb.data();	
	}
}

3)例3:

需求说明:原始的手机,可以发短信,通电话。随着发展,手机增加了功能:音频、视频播放、拍照、上网。使用接口实现手机功能

HanSet类:

//定义手机抽象类HandSet类
public abstract class HandSet {
	private String brand;
	private String type;
	public HandSet() {
		super();
	}

	public HandSet(String brand, String type) {
		super();
		this.brand = brand;
		this.type = type;
	}
	public String getBrand() {
		return brand;
	}
	public void setBrand(String brand) {
		this.brand = brand;
	}
	public String getType() {
		return type;
	}
	public void setType(String type) {
		this.type = type;
	}
	// 定义发短信的方法
	public abstract void sendInfo();
	// 定义打电话的方法
	public abstract void calll();
	public void info() {
		System.out.println("这是一款型号为" + this.type + "的" + this.brand + "手机");
	}
}

NetWork接口:

//上网接口
public interface NetWork {
	void networkConn();
}

PlayWiring接口:

//照相接口
public interface TakePicture {
	void takePictures();
}

TakePicture接口:

public interface PlayWiring {
	void play(String name);
}

ApitudeHandSet类:

public class ApitudeHandSet extends HandSet implements NetWork, PlayWiring,
		TakePicture {

	public ApitudeHandSet() {//手动添加无参构造方法
		super();
	}
	public ApitudeHandSet(String brand, String type) {//手动添加有参构造方法
		super(brand, type);
	}
	@Override
	public void takePictures() {
		System.out.println("咔嚓......拍照成功");
	}
	@Override
	public void play(String name) {
		System.out.println("开始播放视频《" + name + "》");
	}
	@Override
	public void networkConn() {
		System.out.println("已经启动移动网络......");
	}
	@Override
	public void sendInfo() {
		System.out.println("发送带有图片和文字的信息.....");
	}
	@Override
	public void calll() {
		System.out.println("开始视频通话.....");
	}
}

CommonHandSet类:

public class CommonHandSet extends HandSet implements PlayWiring {
	
	public CommonHandSet() {//手动添加无参构造方法
		super();
	}
	public CommonHandSet(String brand, String type) {//手动添加有参构造方法
		super(brand, type);
	}
	@Override
	public void play(String name) {
		System.out.println("开始播放音乐《"+name+"》....");
	}
	@Override
	public void sendInfo() {
		System.out.println("发送文字信息.....");

	}
	@Override
	public void calll() {
		System.out.println("开始语音通话.....");
	}
}

Test类:

public class Test {
	public static void main(String[] args) {
		CommonHandSet chs = new CommonHandSet("索尼爱立信", "G502c");
		chs.info();
		chs.play("热雪");
		chs.sendInfo();
		chs.calll();
		System.out.println("--------------------");
		ApitudeHandSet ahs = new ApitudeHandSet("HTC", "I9100");
		ahs.info();
		ahs.networkConn();
		ahs.play("小时代");
		ahs.takePictures();
		ahs.sendInfo();
		ahs.calll();	
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值