总结 接口中的域默认为static和final的,有interface.a这样的使用
练习3
创建一个基类,让它包含抽象方法print(),并在导出类中覆盖该方法。覆盖后的方法版本可以打印导出类中定义的某个整型变量的值。在定义该变量处,赋予它非零值。在基类的构造方法中调用这个方法。现在,在main()方法中,创建一个导出类对象,然后调用它的print()方法
基类:
package main.chapter9;
/**
* 抽象基类
*
* @author
* @create 2019-04-11 上午2:31
**/
public abstract class Base {
public Base() {
show();
}
public abstract void show();
}
导出类:
package main.chapter9;
/**
* 子类
*
* @author
* @create 2019-04-11 上午2:39
**/
public class Child extends Base {
private int i = 123;
@Override
public void show() {
System.out.println(i);
}
}
测试类:
package main.chapter9;
/**
* 执行类
*
* @author
* @create 2019-04-11 上午2:33
**/
public class ExcuteTest {
public static void main(String[] args){
Base b = new Child();
b.show();
//输出0 123
}
}
解释:
new先执行base的构造方法,调用show,show被覆盖,调用child中的show,此时子类中的变量还没有赋值,使用默认值0。执行b.show,同样被覆盖,调用child中的show,不过此时子类已经完成了构造,输出值
网友评论