使用抽象类来实现接口
- 创建接口类
package cn.anzhongwei.lean.demo.abstractImplementInterface;
import java.math.BigDecimal;
/**
* 接口中定义3个方法
*/
public interface InterfaceA {
int a();
String b();
BigDecimal c();
}
- 创建抽象类
package cn.anzhongwei.lean.demo.abstractImplementInterface;
/**
* 抽象中去实现两个方法,只有c()没有在抽象类中实现,留给最后类去实现c
*
*/
public abstract class AbstractB implements InterfaceA{
@Override
public int a() {
return 1;
}
@Override
public String b() {
return "Hello World!";
}
}
- 创建实现类
package cn.anzhongwei.lean.demo.abstractImplementInterface;
import java.math.BigDecimal;
/**
* 由类来实现抽象中未实现得方法, 这样得好处是可以将抽象当成通用得实现,每个最终得实现只去实现差异即可,
* 既有通用得又有灵活的方法
*/
public class ClassC extends AbstractB{
@Override
public BigDecimal c() {
return new BigDecimal(20);
}
}
- 测试类
package cn.anzhongwei.lean.demo.abstractImplementInterface;
public class TestMain {
public static void main(String[] args) {
InterfaceA interfaceA1 = new ClassC();
System.out.println(interfaceA1.a()); // 1
System.out.println(interfaceA1.b()); // Hello World!
System.out.println(interfaceA1.c()); // 20
AbstractB abstractB2 = new ClassC();
System.out.println(abstractB2.a()); // 1
System.out.println(abstractB2.b()); // Hello World!
System.out.println(abstractB2.c()); // 20
ClassC classc3 = new ClassC();
System.out.println(classc3.a()); // 1
System.out.println(classc3.b()); // Hello World!
System.out.println(classc3.c()); // 20
}
}