接口的理解及工厂设计模式

释放双眼,带上耳机,听听看~!

/*接口是与类并行的一个概念

  • 1,接口可以看成一个特殊的抽象类,是常量与抽象方法的集合
  • 2,常量:所有的常量都用public static final 修饰的
  • 3,方法:所有的方法都是public abstract修饰
  • 4,接口是没有构造器的
  • 5,接口定义的就是一种功能,此功能可以被类实现(inplements)
  • 6,实现接口的类,必须要重写其中所有的抽象方法,或者定义为抽象类
  • 7,类可以实现多个接口 (继承是单继承的 接口是可以多实现的)
  • 8,接口和接口之间也是继承的关系,而且可以多继承的/
    9,接口的多态性是指实现接口的类重写接口的抽象方法

总结:
1, 通过接口可以实现不相关的相同行为,而不需要考虑这些类之间的层次关系。
2, 通过接口可以指明多个类需要实现的方法,一般用于定义对象的扩张功能
3, 接口用来定义规范。解除耦合关系(以前用继承)
设计模式:工厂方法
概述:定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其他子类。
适用性:
1, 当一个类不知道它所必须创建的对象的类的时候。
2, 当一个类希望由它的子类来制定它所创建的对象的时候。
3, 当类讲创建对象的职责委托给多个帮助子类的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。

下面是代码:

package com.yz;
/*接口是与类并行的一个概念
 * 1,接口可以看成一个特殊的抽象类,是常量与抽象方法的集合
 * 2,常量:所有的常量都用public static final 修饰的
 * 3,方法:所有的方法都是public abstract修饰
 * 4,接口是没有构造器的
 * 5,接口定义的就是一种功能,此功能可以被类实现(inplements)
 * 6,实现接口的类,必须要重写其中所有的抽象方法,或者定义为抽象类
 * 7,类可以实现多个接口 (继承是单继承的  接口是可以多实现的)
 * 8,接口和接口之间也是继承的关系,而且可以多继承的*/

public class TestInterface {
    public void test1(Runner r){ //接口不能实例化但是可以作为参数传进函数
        r.run();             //Runner e =new Duck(); 虚拟方法调用
    }
    public void test2(Flier f){
        f.fly();
    }
    public void test3(Swimmer s){
        s.swim();
    }
}
interface AA{
    void method1();
    void method2();
}
interface mm{
    void method3();
}
class BB implements AA{
    public void method1(){}  //想想为什么这里没有public会报错?
    public void method2(){}
}
class DD extends BB implements AA,mm{
    public void method3(){}            
} //即继承又实现的方式

//接口和具体的实现类也存在多态性
interface Runner{
    void run();
}
interface Swimmer{
    void swim();
}
interface Flier{
    void fly();
}
class Duck implements Runner,Swimmer,Flier{

    @Override
    public void fly() {
        System.out.println("丑小鸭变成白天鹅");

    }

    @Override
    public void swim() {
        // TODO Auto-generated method stub
        System.out.println("丑小鸭游啊游");
    }

    @Override
    public void run() {
        // TODO Auto-generated method stub
        System.out.println("丑小鸭跑起来");
    }

}

【转自慕课】https://www.imooc.com

JAVA

答答租车系统,练手,非原创

2022-3-3 1:01:12

JAVA

我是这样写出答答打车系统的

2022-3-3 1:13:09

搜索