interface Inter{
void show1();
void show2();
void show3();
void show4();
}
//DemoA,只需要其中一个方法,就要实现接口的所有方法
class DemoA implements Inter{
public void show1(){
System.out.println(“Demoa show1”);
}
public void show2(){}
public void show3(){}
public void show4(){}
}
//如果再来个DemoB,只用其中一个方法,还要实现接口的所有方法
class DemoB implements Inter{
public void show3(){
System.out.println(“Demoa show3”);
}
public void show2(){}
public void show1(){}
public void show4(){}
}
class InterfaceDemo4{
public static void main(String[] args){
DemoA a = new DemoA();//要实例化必须实现接口里的全部方法
a.show1();
a.show3();
}
}
//问题:只需要部分功能,但是为了实例化,必须要全部覆盖。
代码的复用性很差。该如何解决呢?
abstract class Demo implements Inter{
//这就是传说中的没有抽象方法的抽象类,方便创建接口的对象
private Demo(){} //切记不能写私有,构造函数是给子类初始化的,
私有了,就不能被继承了
void show1(){}
void show2(){}
void show3(){}
void show4(){}
} //空实现
//可以用一个类先把接口中的所有方法都是空实现。
该类创建对象没有意义。所有可以将该类定义为抽象类
class DemoA extends Demo{
void show1(){
System.out.println(“Demoa show1”);
}
class DemoB extends Demo{
void show3(){
System.out.println(“Demoa show3”);
}