抽象类、接口目的是设计与实现分离,是继承与重写的应用,父类只作为一个模板,然后生成每一个子类,每一个子类中要对父类中所有方法都重写。抽象类、接口是多态的深化,都是为了统一处理子类!
回调其实就是多态、抽象类、接口的应用,所谓回调是指一段程序中有一个未定执行语句,这个语句可以是任意一个子类中任意函数、属性,通常这一段程序是封装到一个函数里的,所以这个函数参数我们可以定义为父类类型,同多态一样执行
interface A {
public static final int i = 10; //接口只能定义全局常量需要加public static final如果不加系统默认给出,推荐加。
public abstract void eat();
}
interface B extends A { // 接口可以继承接口
public abstract void sleep();
}
interface C {
public abstract void look();
}
abstract class D { //定义一个抽象类
public void run() {
System.out.println("跑起来");
}
public abstract void learn();
}
public class Text extends D implements B, C { //一个子类可以继承一个抽象类同时实现多个接口
//子类如果不是抽象类就必须实现所有的抽象方法
public void eat() { //实现接口A中的抽象方法
System.out.println("吃东西");
}
public void look() { //实现接口C中的抽象方法
System.out.println("看风景");
}
public void sleep() { //实现接口B中的抽象方法
System.out.println("睡懒觉");
}
@Override
public void learn() { //重写抽象类D中的抽象方法
System.out.println("学Java");
}
public static void main(String[] args) {
B b=new Text(); //多态,接口的引用指向子类的对象
b.eat();
b.sleep();
System.out.println(B.i); //静态常量通过接口名去访问,不推荐用对象去调用
C c=new Text();
c.look();
D d=new Text();
d.learn();
}
}
/**
* 输出为:
吃东西
睡懒觉
10
看风景
学Java
*/