• Java继承--子类的实例化过程


    一个对象的实例化过程:

    Person p = new Person();

    1,JVM会读取指定的路径下的Person.class文件,并加载进内存,并会先加载Person的父类(如果有直接的父类的情况下).
    2,在堆内存中开辟空间,分配地址。
    3,并在对象空间中,对对象中的属性进行默认初始化。
    4,调用对应的构造函数进行初始化。
    5,在构造函数中,第一行会先调用父类中构造函数进行初始化。
    6,父类初始化完毕后,再对子类的属性进行显示初始化。
    7,进行子类构造函数的特定初始化。
    8,初始化完毕后,将地址值赋值给引用变量Person p.

    例:(面试,一个很说明问题的例子)

     1 class Fu
     2 {
     3     Fu()
     4     {
     5         super();
     6         show();  //通过结果可以看出,子父类有同名show方法,调用的是子类show方法。
     7         return;
     8     }
     9 
    10     void show()
    11     {
    12         System.out.println("fu show");
    13     }
    14 }
    15 class Zi extends Fu
    16 {
    17     int num = 8;
    18     Zi()
    19     {
    20         super();
    21         //-->通过super初始化父类内容时,子类的成员变量并未显示初始化。等super()父类初始化完毕后,
    22         //才进行子类的成员变量显示初始化。
    23 
    24         System.out.println("zi cons run...."+num);
    25         return;
    26     }
    27     void show() 
    28     {
    29         System.out.println("zi show..."+num);
    30     }
    31 }
    32 class ExtendsDemo5 
    33 {
    34     public static void main(String[] args) 
    35     {
    36         Zi z = new Zi(); 
    37         z.show();
    38     }
    39 }

    运行结果:

    zi show...0
    zi cons run....8
    zi show...8

    子父类中同名变量问题(面试)

    class Fu {
    	private int num = 4;
    
    	public int getNum() {
    		return num;
    	}
    }
    class Zi extends Fu {
    	private int num = 5;
    
    	void show() {
    		System.out.println(this.num + "....." + super.getNum());
    	}
    }
    class ExtendsDemo1 {
    	public static void main(String[] args) {
    		Zi z = new Zi();
    		z.show();
    	}
    }
    

    输出结果:

    5.....4

  • 相关阅读:
    c#自动更新+安装程序的制作
    VS2013项目受源代码管理向源代码管理注册此项目时出错
    WinDbg配置和使用基础
    InstallShield Limited Edition for Visual Studio 2013 图文教程(教你如何打包.NET程序)
    PowerDesigner 如何生成数据库更新脚本
    用户故事(User Story)
    Troubleshooting Record and Playback issues in Coded UI Test
    Coded UI
    compare two oracle database schemas
    How to: Use Schema Compare to Compare Different Database Definitions
  • 原文地址:https://www.cnblogs.com/kkkky/p/6383641.html
Copyright © 2020-2023  润新知