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");
}
}
输出
例子分析