zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    【MySQL】DBA必备的10款最佳MySQL GUI工具
    【MySQL】获取MySQL崩溃时的core file
    字符串经常用的
    centos 系统上如何把python升级为3
    centos6 升级安装openssh7
    多进程
    队列
    线程池,锁,事件
    thread
    进程、线程
  • 原文地址:https://www.cnblogs.com/kkkky/p/6383641.html
Copyright © 2011-2022 走看看