接口
JAVA 中接口的主要作用是解决单继承局限问题。
接口由全局常量和抽象方法组成。
package com.company;
interface A{
public abstract void funA();
}
interface B{
public abstract void funB();
}
interface C extends A,B{
public abstract void funC();
}
class D implements C{
public void funA(){
System.out.println("A");
}
public void funB(){
System.out.println("B");
}
public void funC(){
System.out.println("C");
}
}
public class Main {
public static void main(String[] args) {
C c = new D();
c.funA();
c.funB();
c.funC();
}
}
package com.company;
interface USB{
void start();
void stop();
}
class Computer{
public void plugin(USB usb){
usb.start();
usb.stop();
}
}
class UDisk implements USB{
public void start() {
System.out.println("U Disk begin working");
}
public void stop() {
System.out.println("U Disk stop working");
}
}
class Printer implements USB{
public void start() {
System.out.println("Printer begin working");
}
public void stop() {
System.out.println("Printer stop working");
}
}
public class Main {
public static void main(String[] args) {
Computer computer = new Computer();
USB uDisk = new UDisk();
USB printer = new Printer();
computer.plugin(uDisk);
computer.plugin(printer);
}
}
package com.company;
interface Fruit{
void eat();
}
class Apple implements Fruit{
public void eat(){
System.out.println("eat apple");
}
}
class Orange implements Fruit{
public void eat(){
System.out.println("eat orange");
}
}
class Factory{
public static Fruit getInstance(String className){
if("apple".equals(className)){
return new Apple();
}
else if("orange".equals(className)){
return new Orange();
}
else {
return null;
}
}
}
public class Main {
public static void main(String[] args) {
Fruit fruit = Factory.getInstance("apple");
fruit.eat();
}
}
package com.company;
interface Subject{
void make();
}
class RealSubject implements Subject{
public void make(){
System.out.println("making");
}
}
class ProxySubject implements Subject{
private Subject subject;
public ProxySubject(Subject subject){
this.subject = subject;
}
public void make(){
this.prepare();
this.subject.make();
this.destroy();
}
public void prepare(){
System.out.println("preparing");
}
public void destroy(){
System.out.println("destroying");
}
}
public class Main {
public static void main(String[] args) {
Subject subject = new ProxySubject(new RealSubject());
subject.make();
}
}