- //所谓看左边的意思是声明的时候是什么类型的
- //就去看这个类型的对应的变量
- //比如,Fu f = new Zi();
- //左边声明的是Fu类型的,那么调用变量的时候
- //就去看Fu类中的变量f.i是Fu中的变量
- class Zi extends Fu{
- int i = 2;
- public Zi(String s){
- System.out.println("B");
- i++;
- }
- public static void main(String[] args){
- int i = 2;//这个是局部变量,跟f.i没关系
- Fu f = new Zi("A");//注意看左边,声明什么就去找什么类中的变量
- System.out.println(f.i);//这里的f.i,i指的是父类中的
-
- }
- }
- class Fu{
- int i = 0;
- public Fu(){
- System.out.println("C");
- i++;
- }
- public Fu(String s){
- System.out.println("D");
- i++;
- }
- }
- //这个Fu f= new Zi();
- //这句话执行了子类有参构造函数8行那里。
- //在Zi的这个函数体中的第一行隐藏了一句super()
- //写出来是这样
- // super();
- // System.out.println("B");
- // i++;
- //这句super();执行Fu类无参构造函数即21行
- //打印C,然后父类的i++,i成了1
- //然后执行完了super
- //回到8行,然后打印B,i++, Zi类的i成了3
复制代码 |