关于子类构造器中调用父类构造器的问题

2019-03-25 13:47|来源: 网路

public class Person{

    private String name;

    public Person(String name){

       this.name = name;

    }

}

 

public class Employee extends Person{

    public Employee(String name){

       super(name);

    }

}

 

public class EmployeeTest{

    public static void main(String[] args){

       Employee e = new Employee("briup");

    }

}

在这里Employee类继承Person类,

在EmployeeTest类的main方法中,new一个Employee对象,

那么Employee类中构造器中的super(name)操作有没有创建Person对象,如果没有创建,那么在Person类中的

name变量在内存中以什么形式存放?

谢谢!

 


问题补充:
我重点想问的是name属性在内存中是如何存放的,谢谢

相关问答

更多
  • 构造器是为了初始化才会有的。 什么是初始化?就是说一些准备工作,我有那些属性、方法, 子类继承父类就是要使用父类里的东西(属性、方法),但是怎么才能知道父类里有什么呢? 那就要先把父类初始化一下,然后父类就具有了相应的属性和方法。 父类初始化完成了,表示具有一些东西了,这时候,子类才会初始化自己。 说的已经很明白了,采纳哦。
  • 特殊规定。 你可以在子类构造器的其他部分使用 this,但是在调用父类构造器的时候使用 this 试试? 这就说明“子类构造器中第一句调用父类构造器”实际上是一个特殊的语法结构,它跟子类构造器中的其他语句是不同的部分。既然知道了它们是不同的部分,它们执行的时机不一样这种事实应该是能理解的 至于这种规定合不合理,符不符合直觉,这里就不评价了
  • 不是~~但是至少应该调用一个!也可以全部调用的! 任意一个类都拥有构造器的!如果你自己没有写,系统会给你加上一个默认的,没有参数的构造器,如果你自己写了,系统不会给你加上去的! 因为继承就是要把父类的东西拿给自己,并在此基础上扩充自己! 子类在调用构造器的时候,不知道父类拥有什么,所以我们需要调用父类的构造器! 如果父类没有自己写构造器,在子类中你自己不写 super 调用构造器的时候~~系统会调用父类的默认的构造器! 你也可以自己写上想调用父类的哪一个构造器! 要关灯了~~~ 欢迎发消息继续交流!
  • 可以这么写: class B extends A{ private String name; B(){ A(name); //这里显 } public B(String name) { super(name); } public void C(){ System.out.println("b.c"); } }
  • 你老师出个题,真他妈的会绕.这是典型打消学生的积极性,实际开发中根本不可能样 给你答案 以下是执行路线 Super s = new Sub(2);//调用下面这个构造函数 public Sub(int i){ this(); //这句让你调用 默认构造函数 System.out.println("5"); } public Sub(){ this(12,"12");//这句又让人调用下面的构造函数 System.out.println("4"); } public Sub(int i,String str) ...
  • a的方法用的是子类继承或重写的方法。 属性是父类的属性。 这是多态的范畴。也常用于接口回调等。 注意不要调用子类的新方法。 当父类是抽象类时,就可用这种构造方式得到能使用指定方法的对象。 如:Map mp = new HashMap();
  • 首先:继承是面向对象的一个特性。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。 通过构造器可以实现对类的实例化与初始化。 所以:要想吸收已有类的数据属性和行为,那么必须先调用父类的构造器,对父类进行实例化与初始化,这样才能实现继承,从而吸收已有类的数据属性和行为并且扩展新类的能力。
  • 没有修饰符,默认就是protected的,这种变量是能被子类访问的。
  • Father a = new Father(baba); 这跟直接调用另一个类并且实例化对象并没多大区别把,不用继承也能做到。调用父类的构造函数用super();关键字 public class Father { public Father() //{ //System.out.println("父类无参构造方法"); //} //不在父类中显式声明 public Father(String name) { System.out.println("父类有参构造方法"); } }//父类 public cla ...
  • 自定义get()和set()方法啊!不能被继承了。例如,调用 private name, 可以,String name = Child.getName(); class Child extends Father{ private String name ; public Child(){ super(); } public void setName(String name){ this.name = name; } public String getName(){ return this.name; } } ...