1.知识点
2.根据接口的举出语法的实例代码
3.接口的作用 (有无接口区别)
3.1实例代码
3.1.1无接口代码
public class Computer {
//连接方法
public void conn(HardDrive hardDrive){
System.out.println("连接设备成功");
hardDrive.read();
hardDrive.write();
}
}
public class HardDrive {
public void read(){
System.out.println("硬盘开始读数据");
}
public void write(){
System.out.println("硬盘开始写数据");
}
}
public class Test {
public static void main(String[] args) {
HardDrive hardDrive = new HardDrive();
Computer computer = new Computer();
computer.conn(hardDrive);
}
}
3.1.2接口代码
public class Computer {
//连接方法
public void conn(Usb usb){
System.out.println("连接设备成功");
usb.read();
usb.write();
}
}
public class Printer implements Usb {
public void read(){
System.out.println("打印机开始读数据");
}
public void write(){
System.out.println("打印机开始打印了");
}
}
public class HardDrive implements Usb {
public void read(){
System.out.println("硬盘开始读数据");
}
public void write(){
System.out.println("硬盘开始写数据");
}
}
//主程序
public class Test {
public static void main(String[] args) {
HardDrive hardDrive = new HardDrive();
Printer printer = new Printer();
Computer computer = new Computer();
computer.conn(hardDrive);
computer.conn(printer);
}
}
3.1.3例子代码
//接口
public interface Menu {
void XiHongShiChaoDan();
void YuXiangRouSi();
void GongBaoJiDian();
}
//厨师一和厨师二
public class Cooker implements Menu{
private String name;
public Cooker(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public void XiHongShiChaoDan() {
System.out.println("西红柿炒蛋做好了");
}
@Override
public void YuXiangRouSi() {
System.out.println("鱼香肉丝做好了");
}
@Override
public void GongBaoJiDian() {
System.out.println("宫保鸡丁做好了");
}
}
public class Cooker2 implements Menu{
private String name;
public Cooker2(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public void XiHongShiChaoDan() {
System.out.println("2西红柿炒蛋做好了");
}
@Override
public void YuXiangRouSi() {
System.out.println("2鱼香肉丝做好了");
}
@Override
public void GongBaoJiDian() {
System.out.println("2宫保鸡丁做好了");
}
}
//顾客
package com.baidu.com.jia.jiekoushili;
/**
* 顾客面向菜单点菜
* */
public class Customer {
public void order(Menu menu){
//调用的都是接口中的方法,面向接口编程,面向抽象编程,降低程序耦合度,提高程序扩展力
menu.GongBaoJiDian();
menu.XiHongShiChaoDan();
menu.YuXiangRouSi();
}
}
//主程序
package com.baidu.com.jia.jiekoushili;
public class Test {
public static void main(String[] args) {
Cooker cooker = new Cooker("山东厨师");
Customer customer = new Customer();
Cooker2 cooker2 = new Cooker2("陕西厨师");
customer.order(cooker);
}
}
接口与抽象类如何选择