接口Interface

在这里插入图片描述

package com.test1.java;

public class USBTest {

	public static void main(String[] args) {
		Computer pc = new Computer();
		Flash flash = new Flash();
		pc.transfer(flash);
	}
}

class Computer{
	public void transfer(USB usb) {
		usb.start();
		System.out.println("传输数据");
		usb.stop();
	}
}
interface USB{
	void start();
	void stop();
}

class Flash implements USB{

	@Override
	public void start() {
		System.out.println("U盘开始传输数据");
	}

	@Override
	public void stop() {
		System.out.println("U盘停止传输数据");
	}
	
}

class Printer implements USB{

	@Override
	public void start() {
		System.out.println("打印机开始工作");
	}

	@Override
	public void stop() {
		System.out.println("打印机停止工作");		
	}
	
}

在这里插入图片描述

package com.test1.java;
/*
 * 1.接口使用interface关键字
 * 2.接口和类并列
 * 3.如何定义接口:定义接口成员
 *  3.1JDK7及以前:只能定义全局常量和抽象方法
 *  	全局常量:public static final,书写时,可以省略不写
 *  	抽象方法:public static,书写时,可以省略不写
 *  3.2JDK8:除定义全局常量和抽象方法以外,还可以定义静态方法和默认方法
 * 4.接口中不能定义构造器,不能实例化
 * 5.开发中,类实现接口:如果接口中所以抽象方法都重写了,那么可以实例化,否则,此类为抽象类 
 * 6.java类可以实现多接口
 *   继承又实现:class A extends B implements C,D,E{}(B、C、D、E具有相同地位)
 *   
 * 7.接口与接口:多继承
 * 8.接口体现多态性
 * 9.接口就是一种规范
 */

public class InterfaceTest {
	public static void main(String[] args) {
		System.out.println(Flyable.MAX_SPEED);
		System.out.println(Flyable.MIN_SPEED);
		
		Plane plane = new Plane();
		plane.fly();
	}

}
interface Attack{
	void attack();
}

interface Flyable{
	
	//全局常量
	public static final int MAX_SPEED = 7900;
	int MIN_SPEED = 1;//省略public static final,默认有
	
	//抽象方法
	public abstract void fly();
	
	void stop();
}

class Plane implements Flyable{

	@Override
	public void fly() {
		System.out.println("飞");
		
	}

	@Override
	public void stop() {
		System.out.println("减速");
		
	}
	
}

class Kit implements Flyable{

	@Override
	public void fly() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void stop() {
		// TODO Auto-generated method stub
		
	}
	
}

class Bullet extends Object implements Flyable,Attack{//既继承又实现

	@Override
	public void attack() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void fly() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void stop() {
		// TODO Auto-generated method stub
		
	}
	
}



//接口继承
interface AA{
	void method1();
}
interface BB{
	void method2();
	
}
interface CC extends AA,BB{
	
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

package com.test1.java;

public class NetWorkTest {

	public static void main(String[] args) {
		Server server = new Server();
		ProxyServer proxyServer = new ProxyServer(server);
		proxyServer.browse();
	}
}

interface Network{
	void browse();
}

//被代理类
class Server implements Network{

	@Override
	public void browse() {
		System.out.println("真实的服务器访问网络");
	}
	
}

//代理类
class ProxyServer implements Network{
	private Network work;
	public ProxyServer(Network work) {
		this.work = work;
	}
	
	public void check() {
		System.out.println("联网之前的检查工作");
	}

	@Override
	public void browse() {
		check();
		work.browse();
	}
	
	
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

package com.test1.java2;


//第一种
//public class Circle {
//
//	private double radius;
//
//	public double getRadius() {
//		return radius;
//	}
//
//	public void setRadius(double radius) {
//		this.radius = radius;
//	}
//
//	public Circle() {
//		super();
//	}
//
//	public Circle(double radius) {
//		super();
//		this.radius = radius;
//	}
//	
//}
//
//interface CompareObject{
//	public int compareTo(Object o);
//}
//
//class ComparableCircle extends Circle implements CompareObject{
//
//	public ComparableCircle(double radius) {
//		super(radius);
//	}
//	@Override
//	public int compareTo(Object o) {
//		if(this == o) {
//			return 0;
//		}
//		if(o.getClass() == this.getClass()) {
//			double diff = this.getRadius() - ((ComparableCircle)o).getRadius();
//			if(diff > 0) {
//				return 1;
//			}
//			if(diff == 0) {
//				return 0;
//			}
//			if(diff < 0) {
//				return -1;
//			}
//		}
//		throw new RuntimeException("传入类型不匹配");
//	}
//	
//}

//第二种:当属性声明为Double
public class Circle {

	private Double radius;

	public Double getRadius() {
		return radius;
	}

	public void setRadius(Double radius) {
		this.radius = radius;
	}

	public Circle() {
		super();
	}

	public Circle(Double radius) {
		super();
		this.radius = radius;
	}
	
}

interface CompareObject{
	public int compareTo(Object o);
}

class ComparableCircle extends Circle implements CompareObject{

	public ComparableCircle(Double radius) {
		super(radius);
	}
	@Override
	public int compareTo(Object o) {
		if(this == o) {
			return 0;
		}
		if(o.getClass() == this.getClass()) {
			ComparableCircle c = (ComparableCircle)o;
			return this.getRadius().compareTo(c.getRadius());
		}
		throw new RuntimeException("传入类型不匹配");
	}
	
}

package com.test1.java2;

public class InterfaceTest {
	public static void main(String[] args) {
		ComparableCircle cc1 = new ComparableCircle(20.3);
		
		ComparableCircle cc2 = new ComparableCircle(20.0);
		
		int compareValue = cc1.compareTo(cc2);
		if(compareValue > 0) {
			System.out.println("cc1半径大");
		}else if(compareValue < 0) {
			System.out.println("cc2半径大");	
		}else {
			System.out.println("二者半径一样大");			
		}
		
		int compareValue1 = cc1.compareTo("AA");
		
	}
}

输出
在这里插入图片描述
在这里插入图片描述

例子分析
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新手学java2021

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值