抽象类
包含抽象方法(仅有方法声明没有方法体)的类叫做抽象类。若抽象类的导出类没有全部实现该抽象类的全部的抽象方法则该导出类也为抽象类。
接口
接口中的所有方法均为抽象方法且每个方法都是public的,接口中的域均为静态常量(static final)。
注:接口可以实现多继承(类只能单根继承)。
接口与工厂
接口是实现多重继承的途径,而生成遵循某个接口的对象的典型方式就是工厂方法设计模式。
范例:
package java001.practice.main;
interface Service{
public void method1();
public void method2();
}
interface ServiceFactory{
Service getService();
}
class Implementation1 implements Service{
public Implementation1() {}
public void method1() {
System.out.println("Implementation1 method1");
}
@Override
public void method2() {
// TODO Auto-generated method stub
System.out.println("Implementation1 method2");
}
}
class ImplementationFactory implements ServiceFactory{
@Override
public Service getService() {
// TODO Auto-generated method stub
return new Implementation1();
}
}
class Implementation2 implements Service{
public Implementation2() {
// TODO Auto-generated constructor stub
}
@Override
public void method1() {
// TODO Auto-generated method stub
System.out.println("Implementation2 method1");
}
@Override
public void method2() {
// TODO Auto-generated method stub
System.out.println("Implementation2 method2");
}
}
class Implementaton2Factory implements ServiceFactory{
@Override
public Service getService() {
// TODO Auto-generated method stub
return new Implementation2();
}
}
public class Factories {
public static void serviceConsumer(ServiceFactory factory){
Service service=factory.getService();
service.method1();
service.method2();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
serviceConsumer(new ImplementationFactory());
serviceConsumer(new Implementaton2Factory());
}
}
执行结果:
Implementation1 method1
Implementation1 method2
Implementation2 method1
Implementation2 method2