*/
Demo:
public class Main {
public static void main(String[] args) {
AAA b=new AAA();
}
static class A {
A() {
System.out.println("A");
start();
}
public void start() {
System.out.println("a----start");
}
}
static class AA extends A implements Callback {
AA() {
System.out.println("AA");
}
@Override
public void start() {
// TODO Auto-generated method stub
System.out.println("AA----------start");
getMessage("xxxxxxxx");
super.start();
}
@Override
public void getMessage(String str) {
// TODO Auto-generated method stub
}
}
static class AAA extends AA {
AAA() {
System.out.println("AAA");
}
@Override
public void getMessage(String str) {
// TODO Auto-generated method stub
System.out.println(str);
}
@Override
public void start() {
// TODO Auto-generated method stub
// System.out.println("AAA-------start");
//super.start();
}
}
interface Callback {
void getMessage(String str);
}
}
输出结果为:
A
AA
AAA
将AAA 的start方法中 注释掉的 //super,start() 启用 输出结果为:
A
AAA-------start
AA----------start
a----start
AA
AAA
结果一目了然 大家可以将这个代码放到本地测试下 研究下。
里面还有一个CallBack的接口 这个接口也有挺有意思的。 是这样的。
我们的AA类是一个抽象类继承了一个接口Callbakc 他们这个AA类就需要是实现Callback接口中的getMessge方法。由于aa类是抽象的。所以他可以不用去
@Override这个方法。而是由 aa的子类去实现getMessage方法 那么我们根据初始化过程研究。
我们在AA类中调用getMessage方法的时候 最会去调用子类 AAA中实现的方法 那么最低级子类就可可以回调接受到由父类AA传递的参数。那么说这么多 这个东西有什么用处呢? 其实用户很大的。。。 有的时候 根据很多业务逻辑的不同。 我们有一父类-子类-子子类 这样的东西。每个父类当众都会有其单独的业务逻辑。父类中处理玩业务以后可以直接将通过调用子类重写的方法将结果给子类。
希望大家可以多多讨论