第十三天笔记(补)

本文介绍了Java接口的特性,包括接口中成员的默认修饰符、实现类的约束以及多接口继承。通过手机类的抽象和具体实现展示了多态的应用。此外,还用打印机类为例,演示了如何使用接口实现墨盒和纸张的多态组装,强调了接口在软件设计中的灵活性。
摘要由CSDN通过智能技术生成

接口

接口的特点:

JDK1.7

1.接口中不能有普通属性 默认都是静态常量 不管是否书写 都是public static final修饰

2.接口中不能有普通方法 默认都是抽象方法 不管是否书写 都是public abstract 修饰

3.实现类必须重写接口的抽象方法 除非子类是抽象类或者还是接口

4.接口不能实现接口,可以继承接口,也可以继承多个。

5.实现类可以实现多个接口

6.接口不能直接new对象 必须通过new实现类(子类)的方式 创建对象

JDK1.8+

1.接口可以写普通方法 使用default关键字 加载访问符之后 返回值之前

2.可以写静态方法

package com.qfedu.test4;
/**
 * 	手机抽象类
 * 	本类只提供手机最基本的功能
 * 	打电话 
 * 	发短信
 * @author WHD
 *
 */
public abstract  class Phone {
	public abstract void  sendMessage(String message);
	public abstract void call();
}
package com.qfedu.test4;
/**
 * 	普通手机类
 * 	一个类需要继承类和实现接口的时候  先继承 后实现 
 * @author WHD
 *
 */
public class CommonPhone extends Phone implements PlayMusic,TakePhoto{

	@Override
	public void sendMessage(String message) {
		System.out.println("普通手机发信息" + message);
	}

	@Override
	public void call() {
		System.out.println("普通手机打电话,信号不好");
	}

	@Override
	public void playMusic(String musicName) {
		System.out.println("普通手机,音质感人,正在播放" + musicName);
	}

	@Override
	public void take() {
		System.out.println("100万像素,全景马赛克模式");
	}

}
package com.qfedu.test4;

public class SmartPhone extends Phone implements PlayMusic,PlayGame,PlayVideo,TakePhoto,NetWork{

	@Override
	public void sendMessage(String message) {
		System.out.println("智能手机发送语音短信" + message);
	}

	@Override
	public void call() {
		System.out.println("智能手机打视频电话");
	}

	@Override
	public void connect() {
		System.out.println("智能手机联网,连接世界,连接你我");
	}

	@Override
	public void take() {
		System.out.println("咔嚓一下,记录一张CD");
	}

	@Override
	public void play(String videoName) {
		System.out.println("智能手机正在播放" + videoName);
	}

	@Override
	public void playGame(String gameName) {
		System.out.println("智能手机正在玩游戏" + gameName);
	}

	@Override
	public void playMusic(String musicName) {
		System.out.println("智能手机播放音乐" + musicName);
	}

}
package com.qfedu.test4;
/**
 * 	联网接口
 * @author WHD
 *
 */
public interface NetWork {
	void connect();
}
package com.qfedu.test4;
/**
 * 	玩游戏接口
 * @author WHD
 *
 */
public interface PlayGame {
	void playGame(String gameName);
}
package com.qfedu.test4;
/**
 * 	播放音乐接口
 * @author WHD
 *
 */
public interface PlayMusic {
	void playMusic(String musicName);
}
package com.qfedu.test4;
/**
 * 	看片接口
 * @author WHD
 *
 */
public interface PlayVideo {
	void play(String videoName);
}
package com.qfedu.test4;
/**
 * 	拍照接口
 * @author WHD
 *
 */
public interface TakePhoto {
	void take();
}

接口使用多态的方式组装打印机

package com.qfedu.test5;
/**
 * 	打印机
 * 	墨盒
 * 		彩色 黑白
 * 	纸张
 * 		A4 B5
 * @author WHD
 *
 */
public class Printer {
	private InkBox inkbox;  // 墨盒 
	private Paper paper;   // 纸张
	public InkBox getInkbox() {
		return inkbox;
	}
	public void setInkbox(InkBox inkbox) {
		this.inkbox = inkbox;
	}
	public Paper getPaper() {
		return paper;
	}
	public void setPaper(Paper paper) {
		this.paper = paper;
	}
	
	public void print() {
		System.out.println("使用" + this.getInkbox().getInkBoxType() + "在" + this.getPaper().getPaperSize() + "纸张打印");
	}
}
package com.qfedu.test5;
/**
 * 	墨盒接口 相当于规定了 墨盒的规范
 * 	返回墨盒的类型
 * @author WHD
 *
 */
public interface InkBox {
	String getInkBoxType();
}
package com.qfedu.test5;
/**
 * 	黑白 黑色 墨盒
 * @author WHD
 *
 */
public class BlackInkbox implements InkBox{

	@Override
	public String getInkBoxType() {
		return "黑白墨盒";
	}
}
package com.qfedu.test5;

public class ColorInkbox implements InkBox {

	@Override
	public String getInkBoxType() {
		return "彩色墨盒";
	}
}
package com.qfedu.test5;
/**
 * 	纸张接口
 * 	获取纸张规格方法
 * 	
 * @author WHD
 *
 */
public interface Paper {
	String getPaperSize();
}
package com.qfedu.test5;

public class A4 implements Paper{

	@Override
	public String getPaperSize() {
		return "A4";
	}
}
package com.qfedu.test5;

public class B5 implements Paper{

	@Override
	public String getPaperSize() {
		return "B5";
	}
}
package com.qfedu.test5;

public class Test {
	public static void main(String[] args) {
		Printer hp = new Printer();
		InkBox color = new ColorInkbox();
		hp.setInkbox(color);
		
		Paper a4 = new A4();
		hp.setPaper(a4);
		
		
		hp.print();
		
		InkBox balck = new BlackInkbox();
		Paper b5 = new B5();
		hp.setInkbox(balck);
		hp.setPaper(b5);
		
		hp.print();

	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值