谁能帮我画下java这个过程的内存图

发布网友 发布时间:2022-04-24 05:32

我来回答

4个回答

热心网友 时间:2023-11-01 02:16

super();   方法是指调用该类的父类的构造方法   super方法的参数个数,类型都与父类的构造方法一致,否则编译不通过


在此处 就相当于在 子类 Dog 中的 构造方法里 调用了 它的父类-Animal类中的构造函数Animal("小狗")

调用的结果就是把Dog类中的name属性赋值成了"小狗"。


这里需要注意的一点是:在构造方法中调用父类的构造方法时,super()方法必须写在构造方法的第一句,否则编译会不通过

追问子类在调用构造方法时内存图是怎样的

热心网友 时间:2023-11-01 02:17

子类:在父类的基础上可增加方法、属性等(即扩充),可(覆盖)原有方法

Animal:父类-动物
Dog:子类-狗

狗拥有动物拥有的特性,并且还有狗自己的独有特性(扩充)
动物要吃饭,但并不是所有动物都吃的一样(覆盖)

狗一定是动物,但动物不一定是狗。

Animal a = new Animal(“动物”);
//没输出,因为你并没有打印a.name
//但他调用了Animal (String name);构造方法

Dog b = new Dog();
//调用了Dog()构造方法
//Dog()中super(“小狗”)=====super指当前类的父类,super(参数)指父类的构造方法
//super("小狗")=======调用了Animal (String name)
//Animal (String name)中 this.name=name
//this指当前对象this.XXXXX指用当前对象来调用,当局域变量和成员变量名一样时,用this
//就代表成员变量(局部的不需要谁来调用),你会奇怪那Dog里没name啊,name是从父
//类继承过来的
System.out.println(b.name);//这个就不用说了吧!追问子类在调用构造方法时内存图是怎样的

热心网友 时间:2023-11-01 02:17

首先 Animal a = new Animal("动物"); 这一行可以不用写
为什么这里给了动物,然后在Dog类中还要传小狗呢??
这一行可以注释掉 但结果也是一样

当执行到Dog b = new Dog();时 会先执行Dog类的构造方法
这时执行的是Dog类的Dog(){}方法,而super 指向的是当前类的父类对象
super("小狗")调用的是当前父类的有参构造方法,而且传入的参数是一个String类型的无疑Animal(String name)方法符合条件
super指向的是当前父类的默认引用
当执行到super("小狗")的时候会跳转到父类的Animal(String name)方法中执行该方法

当执Dog类的构造方法Dog(){super("小狗")}时 会把小狗传入到当前父类的构造方法中
此时父类的构造方法中的便有值了(String name) name = "小狗";
然后把name的值赋值给this.name

当执行完Animal(String name)方法的后在执行Dog(){}方法的余下的代码块

super指向的是当前父类的默认引用
this指向的是当前类的默认引用
两者的功能都差不多追问那父类的name是什么

追答父类的name是Animal类的属性,当Animal类被继承后,Animal的子类便可以拥有父类的所有属性和方法,当然 如果修饰符是private或者是 不同包且访问修饰符是默认的 ,这两种情况的不可被子类继承

热心网友 时间:2023-11-01 02:18

Animal a=new Animal("动物"); 这句话你就不用管
Dog b=new Dog(); 这句话new这块调用了Dog类的构造方法,Dog类的构造方法中使用了super关键字调用了父类的构造方法也就是
public Animal(String name){
this.name=name;
}
由于Dog子类继承了父类Animal的name属性,所以,当调用b.name的时候实际上是调用了从父类继承过来的name属性。
而父类的构造中的this.name=name,你就可以理解成b.name=name,this指的就是当前的对象。
实际上this关键字存的就是当前对象的地址,this.name,你就可以理解成b.name,如果Dog a=Dog("A");你也可以理解成a.name

热心网友 时间:2023-11-01 02:16

super();   方法是指调用该类的父类的构造方法   super方法的参数个数,类型都与父类的构造方法一致,否则编译不通过


在此处 就相当于在 子类 Dog 中的 构造方法里 调用了 它的父类-Animal类中的构造函数Animal("小狗")

调用的结果就是把Dog类中的name属性赋值成了"小狗"。


这里需要注意的一点是:在构造方法中调用父类的构造方法时,super()方法必须写在构造方法的第一句,否则编译会不通过

追问子类在调用构造方法时内存图是怎样的

热心网友 时间:2023-11-01 02:17

子类:在父类的基础上可增加方法、属性等(即扩充),可(覆盖)原有方法

Animal:父类-动物
Dog:子类-狗

狗拥有动物拥有的特性,并且还有狗自己的独有特性(扩充)
动物要吃饭,但并不是所有动物都吃的一样(覆盖)

狗一定是动物,但动物不一定是狗。

Animal a = new Animal(“动物”);
//没输出,因为你并没有打印a.name
//但他调用了Animal (String name);构造方法

Dog b = new Dog();
//调用了Dog()构造方法
//Dog()中super(“小狗”)=====super指当前类的父类,super(参数)指父类的构造方法
//super("小狗")=======调用了Animal (String name)
//Animal (String name)中 this.name=name
//this指当前对象this.XXXXX指用当前对象来调用,当局域变量和成员变量名一样时,用this
//就代表成员变量(局部的不需要谁来调用),你会奇怪那Dog里没name啊,name是从父
//类继承过来的
System.out.println(b.name);//这个就不用说了吧!追问子类在调用构造方法时内存图是怎样的

热心网友 时间:2023-11-01 02:17

首先 Animal a = new Animal("动物"); 这一行可以不用写
为什么这里给了动物,然后在Dog类中还要传小狗呢??
这一行可以注释掉 但结果也是一样

当执行到Dog b = new Dog();时 会先执行Dog类的构造方法
这时执行的是Dog类的Dog(){}方法,而super 指向的是当前类的父类对象
super("小狗")调用的是当前父类的有参构造方法,而且传入的参数是一个String类型的无疑Animal(String name)方法符合条件
super指向的是当前父类的默认引用
当执行到super("小狗")的时候会跳转到父类的Animal(String name)方法中执行该方法

当执Dog类的构造方法Dog(){super("小狗")}时 会把小狗传入到当前父类的构造方法中
此时父类的构造方法中的便有值了(String name) name = "小狗";
然后把name的值赋值给this.name

当执行完Animal(String name)方法的后在执行Dog(){}方法的余下的代码块

super指向的是当前父类的默认引用
this指向的是当前类的默认引用
两者的功能都差不多追问那父类的name是什么

追答父类的name是Animal类的属性,当Animal类被继承后,Animal的子类便可以拥有父类的所有属性和方法,当然 如果修饰符是private或者是 不同包且访问修饰符是默认的 ,这两种情况的不可被子类继承

热心网友 时间:2023-11-01 02:18

Animal a=new Animal("动物"); 这句话你就不用管
Dog b=new Dog(); 这句话new这块调用了Dog类的构造方法,Dog类的构造方法中使用了super关键字调用了父类的构造方法也就是
public Animal(String name){
this.name=name;
}
由于Dog子类继承了父类Animal的name属性,所以,当调用b.name的时候实际上是调用了从父类继承过来的name属性。
而父类的构造中的this.name=name,你就可以理解成b.name=name,this指的就是当前的对象。
实际上this关键字存的就是当前对象的地址,this.name,你就可以理解成b.name,如果Dog a=Dog("A");你也可以理解成a.name

热心网友 时间:2023-11-01 02:16

super();   方法是指调用该类的父类的构造方法   super方法的参数个数,类型都与父类的构造方法一致,否则编译不通过


在此处 就相当于在 子类 Dog 中的 构造方法里 调用了 它的父类-Animal类中的构造函数Animal("小狗")

调用的结果就是把Dog类中的name属性赋值成了"小狗"。


这里需要注意的一点是:在构造方法中调用父类的构造方法时,super()方法必须写在构造方法的第一句,否则编译会不通过

追问子类在调用构造方法时内存图是怎样的

热心网友 时间:2023-11-01 02:17

子类:在父类的基础上可增加方法、属性等(即扩充),可(覆盖)原有方法

Animal:父类-动物
Dog:子类-狗

狗拥有动物拥有的特性,并且还有狗自己的独有特性(扩充)
动物要吃饭,但并不是所有动物都吃的一样(覆盖)

狗一定是动物,但动物不一定是狗。

Animal a = new Animal(“动物”);
//没输出,因为你并没有打印a.name
//但他调用了Animal (String name);构造方法

Dog b = new Dog();
//调用了Dog()构造方法
//Dog()中super(“小狗”)=====super指当前类的父类,super(参数)指父类的构造方法
//super("小狗")=======调用了Animal (String name)
//Animal (String name)中 this.name=name
//this指当前对象this.XXXXX指用当前对象来调用,当局域变量和成员变量名一样时,用this
//就代表成员变量(局部的不需要谁来调用),你会奇怪那Dog里没name啊,name是从父
//类继承过来的
System.out.println(b.name);//这个就不用说了吧!追问子类在调用构造方法时内存图是怎样的

热心网友 时间:2023-11-01 02:17

首先 Animal a = new Animal("动物"); 这一行可以不用写
为什么这里给了动物,然后在Dog类中还要传小狗呢??
这一行可以注释掉 但结果也是一样

当执行到Dog b = new Dog();时 会先执行Dog类的构造方法
这时执行的是Dog类的Dog(){}方法,而super 指向的是当前类的父类对象
super("小狗")调用的是当前父类的有参构造方法,而且传入的参数是一个String类型的无疑Animal(String name)方法符合条件
super指向的是当前父类的默认引用
当执行到super("小狗")的时候会跳转到父类的Animal(String name)方法中执行该方法

当执Dog类的构造方法Dog(){super("小狗")}时 会把小狗传入到当前父类的构造方法中
此时父类的构造方法中的便有值了(String name) name = "小狗";
然后把name的值赋值给this.name

当执行完Animal(String name)方法的后在执行Dog(){}方法的余下的代码块

super指向的是当前父类的默认引用
this指向的是当前类的默认引用
两者的功能都差不多追问那父类的name是什么

追答父类的name是Animal类的属性,当Animal类被继承后,Animal的子类便可以拥有父类的所有属性和方法,当然 如果修饰符是private或者是 不同包且访问修饰符是默认的 ,这两种情况的不可被子类继承

热心网友 时间:2023-11-01 02:18

Animal a=new Animal("动物"); 这句话你就不用管
Dog b=new Dog(); 这句话new这块调用了Dog类的构造方法,Dog类的构造方法中使用了super关键字调用了父类的构造方法也就是
public Animal(String name){
this.name=name;
}
由于Dog子类继承了父类Animal的name属性,所以,当调用b.name的时候实际上是调用了从父类继承过来的name属性。
而父类的构造中的this.name=name,你就可以理解成b.name=name,this指的就是当前的对象。
实际上this关键字存的就是当前对象的地址,this.name,你就可以理解成b.name,如果Dog a=Dog("A");你也可以理解成a.name

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com