Java中子类对象实例化过程-面向对象-Java基础学习(十九)

 

1.JVM先找指定的类字节码并加载进内存,并会先加载父类的字节码进内存;

 

2.在堆内开辟内存空间,分配内存地址;

 

3.在对象的内存空间中对对象的属性进行默认初始化;

 

4.调用对应的构造方法初始化;

 

5.在构造方法中第一行先调用父类的构造方法对父类进行初始化;(如果不显示指定父类构造方法,默

认为super());

 

6. 父类初始化完毕后,再对子类属性进行显式初始化;

 

7.再进行子类构造方法的特定初始化;

 

8.初始化完毕后,将对象的引(分配的内存地址)用返回。

 

例题解析

  1. //子类对象实例化的全过程
  2. public class TestDog {
  3. public static void main(String[] args) {
  4. Dog d = new Dog();
  5. d.setAge(10);
  6. d.setName("小明");
  7. d.setHostName("花花");
  8. System.out.println("name:" + d.getName() + " age:" + d.getAge()
  9. "hostName:" + d.getHostName());
  10. System.out.println(d.toString());
  11. }
  12. }
  13. // 生物
  14. class Creator {
  15. private int age;
  16. public int getAge() {
  17. return age;
  18. }
  19. public void setAge(int age) {
  20. this.age = age;
  21. }
  22. public Creator() {
  23. super();
  24. System.out.println("this is Creator's constructor");
  25. }
  26. }
  27. // 动物类
  28. class Animal extends Creator {
  29. private String name;
  30. public String getName() {
  31. return name;
  32. }
  33. public void setName(String name) {
  34. this.name = name;
  35. }
  36. public Animal() {
  37. super();
  38. System.out.println("this is Animal's constructor");
  39. }
  40. }
  41. // 狗
  42. class Dog extends Animal {
  43. private String hostName;
  44. public String getHostName() {
  45. return hostName;
  46. }
  47. public void setHostName(String hostName) {
  48. this.hostName = hostName;
  49. }
  50. public Dog() {
  51. super();
  52. System.out.println("this is Dog's constructor");
  53. }
  54. }

Java中子类对象实例化过程-面向对象-Java基础学习(十九)

weinxin
我的微信
有问题微信找我
DannyWu

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: