精华内容
下载资源
问答
  • 这个是Java的规定:子类继承父类,子类构造方法必须调用super()即父类的构造方法,而且必须放在构造方法的第一行。 1、为什么在实例化子类的对象时,会先调用父类的构造器? 答:子类继承父类后,获取到父类的...

    这个是Java的规定:子类继承父类,子类的构造方法必须调用super()即父类的构造方法,而且必须放在构造方法的第一行。

    1、为什么在实例化子类的对象时,会先调用父类的构造器?

    答:子类继承父类后,获取到父类的属性和方法,这些属性和方法在使用前必须先初始化,所以须先调用父类的构造器进行初始化

    2、在哪里调用父类的构造器?

    答:在子类构造器的第一行会隐式的调用 super();,即调用父类的构造器

    如果父类中没有定义空参的构造器,则必须在子类的构造器的第一行显示的调用super(参数); ,以调用父类中构造器

    如果子类中构造器的第一行写了this();,则就隐式的super();会消失,因为super()this()都只能在构造器的第一行定义


    转载:
    Java构造方法之super用法_Java_jcaksonsen的博客-CSDN博客
    Java为什么在实例化子类的对象时,会先调用父类的构造器_Java_万万的学习笔记-CSDN博客

    展开全文
  • 笔者之前一直很疑惑:为什么别人的源代码中的类...这个是Java的规定:子类继承父类,子类构造方法必须调用super()即父类的构造方法,而且必须放在构造方法的第一行。那么问题又来,为什么我写的类有时候都不用去...

    笔者之前一直很疑惑:为什么别人的源代码中的类要继承,居然一定要写super,而且必须写在第一行。不然就会报错。

    刚刚开始还以为是别人的源代码中写了注解还是什么鬼的代码。查过诸多的资料之后发现。

    请注意正解来了!请注意正解来了!请注意正解来了!

    这个是Java的规定:子类继承父类,子类的构造方法必须调用super()即父类的构造方法,而且必须放在构造方法的第一行

    那么问题又来,为什么我写的类有时候都不用去调用父类的构造方法?

    因为:如果父类"只"有无参构造方法,且不打算重写子类的构造方法,为节省代码量,子类构造方法可以不写,但是实际上是已经写了,系统默认调用父类无参构造方法super(),即默认会在子类构造方法中的第一行加上父类的无参构造方法

    下面是我自己的研制代码截图:当父类有无参构造函数或者,没有生命构造函数的时候,是不会报错的

    子类:

    当父类不包含无参构造函数的的时候,几句报错:

    子类:

    这个时候只要在子类构造函数第一行中添加构造函数就可以

    最好再次总结:子类构造函数必须在构造函数第一行调用父类构造函数,

    当子类构造函数没有调用父类构造函数的时候是因为父类构造包含无参构造函数,

    为了节省代码,

    系统会自动添加调用。


    此文出处:https://blog.csdn.net/jcaksonsen/article/details/51564382

    展开全文
  • 好像有这样一说法在子类构造方法中,如果没有调用父类的构造方法,就会默认加一个super() 如果父类没有这一构造方法,就会报错。我想问java在子类构造方法时候是先检验是否能生成父类的对象还是先检测是否调用了...
  • 1.构造方法中的应用:  在Java中,子类的构造过程中,必须调用其父类的构造函数,是因为有继承关系存在时,子类要把父类的内容继承下来。...构造方法是new一个对象的时候,必须要调的方法,这是规定,要ne

    1.构造方法中的应用:

      在Java中,子类的构造过程中,必须调用其父类的构造函数,是因为有继承关系存在时,子类要把父类的内容继承下来。  

      当你new一个子类对象的时候,必须首先要new一个父类的对象出来,这个父类对象位于子类对象的内部,所以说,子类对象比父类对象大,子类对象里面包含了一个父类的对象,这是内存中真实的情况.构造方法是new一个对象的时候,必须要调的方法,这是规定,要new父类对象出来,那么肯定要调用其构造方法,所以:   

     第一个规则:子类的构造过程中,必须调用其父类的构造方法。一个类,如果我们不写构造方法,那么编译器会帮我们加上一个默认的构造方法,所谓默认的构造方法,就是没有参数的构造方法,但是如果你自己写了构造方法,那么编译器就不会给你添加了,所以有时候当你new一个子类对象的时候,肯定调用了子类的构造方法,但是在子类构造方法中我们并没有显式的调用父类的构造方法,就是没写super(); 虽然并没有这样写,但是编译器会调用父类没有参数的构造方法,如果父类中没有没有参数的构造方法就会出错。   

     第二个规则:如果子类的构造方法中没有显式的调用父类构造方法,则系统默认调用父类无参数的构造方法。注意:如果子类的构造方法中既没有显式的调用父类构造方法,而父类中又没有默认无参的构造方法,则编译出错,所以,通常我们需要显式的用super(参数列表),来调用父类有参数的构造函数。


     代码如下:

    //当你没有使用父类默认的构造方法时,此时在子类的构造方法中就需要显示的调用父类定义的构造方法。
     class Animal{
       private String name;

       //如果你定义一个新的构造方法
       public Animal(String name) {
         this.name = name;
       }
     }

     public Dog extends Animal{

       //这时你就要显式的调用父类的构造方法,因为子类默认调用的是父类的
       //无参构造方法Animal(),但父类中没有该构造方法,如果不显式调用有参构造就会出错。
       public Dog(){
         super("小狗");  //显式调用父类的有参构造方法
         ....  //子类的构造方法处理
       }
     }

     //当然,如果你在父类里面把无参的构造方法,显式的写出来了,比如:
     class Animal{
       private String name;

       //无参的构造方法
       public Animal() {
         .....  //处理
       }
       //有参构造方法
       public Animal(String name) {
         this.name = name;
       }
         /*
       如果你在父类中显式地定义一个无参构造方法,那么在子类的构造方法中,就可以不用显示的调用父类的构造方法了,因为
       子类会在构造方法中自动调用父类已经定义的无参构造方法。
       */
     }

    public Dog extends Animal{

       /*
        *   public Dog(){   
       
        *  }
        */

     }

    总结:不过一般的,在父类中使用了构造方法的重载,如写了几个有参构造而没有写无参构造,在子类中就要根据需要,显式地使用super关键字来调用相应的父类构造方法。


    2. 在一般方法中子类调用父类的方法时,可以用super.父类方法名(参数),来调用父类的方法。

     通常情况下,子类默认继承父类的方法,所以这个super是可以省略的。例如在Animal类中有方法,

    public void printName(String s){

    system.out.println(s);

    }

    子类Dog类中有方法需要调用到Animal中的方法时,可以省略super。

    public void getParrentName(){

    system.out.println( "PP的名字是:" + super.printName("藏獒") );

            system.out.println( "PP的名字是:" + printName("藏獒") );//省略super,因为子类可以继承父类的方法,相当于子类本身就有该方法,不用显式地写出super.

    }

    但如果子类重写了父类的方法,如,在Dog类中有方法:

    public void pringName(String s){

    system.out.print("子类的方法:" + s);

    }

    那么getParrentName()方法中,不省略super的话,就调用父类的方法super.printName("藏獒");返回“PP的名字是:藏獒”。而没有super的话,会打印出“PP的名字是:子类的方法:藏獒”。但要注意如果在父类中的方法是个递归方法,那么如果子类重写了该方法,并且子类在其他方法中调用了该递归方法,那么此时,父类的递归方法只会被传入的参数调用最外面的一层,而里层的递归,因为子类重写了该方法而调用子类的方法返回f(n-1)的结果。不会递归调用父类方法中的f(n-1).


    展开全文
  • 子类构造方法

    2015-06-05 10:05:00
    子类构造函数中第一行有一个默认的隐式语句。 super(); 子类的实例化过程:子类中所有的构造函数默认都会访问父类中的空参数的构造... 为什么完成这个必须的动作,就在子类构造函数中加入了super()语句。 ...

    在子类的构造函数中第一行有一个默认的隐式语句。 super();

    子类的实例化过程:子类中所有的构造函数默认都会访问父类中的空参数的构造函数。

    那是因为子类继承了父类,获取到了父类中内容(属性),所以在使用父类内容之前,

    要先看父类是如何对自己的内容进行初始化的。

    所以子类在构造对象时,必须访问父类中的构造函数。
    为什么完成这个必须的动作,就在子类的构造函数中加入了super()语句。

     

    如果父类中没有定义空参数构造函数,那么子类的构造函数必须用super明确要调用

    父类中哪个构造函数。同时子类构造函数中如果使用this调用了本类构造函数时,

    那么super就没有了,因为super和this都只能定义第一行。所以只能有一个。
    但是可以保证的是,子类中肯定会有其他的构造函数访问父类的构造函数。


    注意:supre语句必须要定义在子类构造函数的第一行。因为父类的初始化动作要先完成。

    转载于:https://www.cnblogs.com/lyp-java/p/4553907.html

    展开全文
  • 在子类的构造方法中使用super([参数列表])来调用父类的构造方法,调用父类构造方法的super()写在子类构造方法中的第一句。如果在子类的构造方法中没有显示的调用父类的构造方法,那么会自动调用父类的空参构造方法...
  • 分析如下所示的Java代码,则选项中的说法正确的是( )(多选)。 ``` class Parent{ public String name;... 第4行错误,调用父类构造方法的语句必须放在子类构造方法中的第一行 D. 程序编译通过,无错误
  • super() 的父类构造方法调用,必须放在子类构造方法的第一个语句,而且必须只能使用一次 回顾构造方法 构造方法,是在构造一个类时必须具备的, 如果不写构造方法,那么在编译的时候编译器会自动赠送一个。 ...
  • 我们都知道,一个类在继承一个类之后,是必须要初始化这个父类的,不然你子类继承父类的那些参数,无法初始化。所以在子类继承父类后,必须调用父类里面的构造方法。 目的就是为了初始化父类的参数,子类才能使用 ...
  • 因为子类继承父类,会继承到父类中的数据,所以必须要看父类是如何对自己的数据进行初始化的。因此子类在进行对象初始化时,先调用父类的构造函数,这就是子类的实例化过程。 二、子类的所有构造函数中的第一行,...
  • 1. 子类构造方法必须访问父类构造方法的原因 {1}. 原因:子类继承自父类,那么子类就必须要拥有父类的所有财产和父类的功能。财产指的是父类的成员变量和成员方法。 {2}. 成员方法的代码全部
  • 如果有,就执行,没有就自动添加一个如果父类有含参构造方法,则子类必须添加含参构造方法如果父类没有含参构造方法子类无需添加构造方法this在构造方法之间的应用super构造方法中的应用首先明白super关键字...
  • 如果有,就执行,没有就自动添加一个如果父类有含参构造方法,则子类必须添加含参构造方法如果父类没有含参构造方法子类无需添加构造方法this在构造方法之间的应用super构造方法中的应用首先明白super关键字...
  • /* 如果父类没有无参构造方法,那么子类构造方法会出现什么现象呢?...子类中一定有一个去访问了父类的构造方法,否则父类数据就没有初始化。 注意事项: this(...)或者super(...)必须出现在第一条语
  • super();方法在子类构造方法中是默认的,不写也有,但是如果你写出来,那只能写在子类构造方法的第一行。 继承关系中,父子类构造方法的...3. super的父类构造调用,必须子类构造方法的第一个语句。不能一个子...
  • new一次执行一次每个类都有构造方法,即使不写也有,编译时javac会自动检查类是否有构造方法,如果有,就执行,没有就自动添加一个如果父类有含参构造方法,则子类必须添加含参构造方法如果父类没有含参构造方法,...
  • 标准的类继承关系: 父类代码: 子类代码: **首先看以上代码中的构造...当父类中有无参构造方法时,子类super()其实可以省掉,系统会自动为我们调用一个父类的无参构造方法super() 写在构造方法的第一行 )
  • 表示父类对象的默认引用 如果子类调用父类被覆盖的实例方法,可用super作为调用者调用父类...子类构造方法调用父类构造方法用super(参数列表) 子类调用父类的构造方法时: super必须放在第一句 Java在执行子类...
  • 表示父类对象的默认引用 如果子类调用父类被覆盖的实例方法,可用super作为调用...子类构造方法调用父类构造方法用super(参数列表) 子类调用父类的构造方法时: super必须放在第一句 Java在执行子类的构造方法...
  • 由于子类不能继承父类的构造方法,因此,调用父类的构造方法必须子类构造方法体的第一行使用 super() 方法。该方法会调用父类相应的构造方法来完成子类对象的初始化工作。 在以下情况下需要使用 super ...
  • 子类想继承父类时,父类必须有无参的构造方法,如果不主动添加系统会默认添加一个无参的构造方法,此时子类可以顺利继承父类 但是当父类添加了一个带参的构造方法时,此时系统将不会再默认添加无参的构造方法,...
  • 使用super调用父类方法使用super调用父类的构造方法调用构造方法本类中调用另一个重载构造方法用this(参数列表)子类构造方法调用父类构造方法用super(参数列表)子类调用父类的构造方法时:super必须放在第一句Java在...
  • 当父类没有默认的构造...答:在子类构造方法的第一行中默认(不显示)调用super();即调用了父类构造函数 如果父类里面没有定义参数为空的构造函数,那么必须子类的构造函数的第一行显示的调用super(参数);.
  • 由于子类不能继承父类的构造方法,因此,调用父类的构造方法必须子类构造方法体的第一行使用 super() 方法。该方法会调用父类相应的构造方法来完成子类对象的初始化工作。在以下情况下需要使用 super 关键字...
  • 构造方法,this,super

    2019-08-07 17:25:48
    1.构造方法 1.特点: 1.构造方法名称必须和类型保持一致。 2.构造方法没有具体的返回值。 3.调用其他构造方法的...1.在创建子类对象时,父类的构造方法会先执行,因为子类中所有构造方法的第一行有默认的隐式super(...
  • 编写JAVA作业时在继承的环节发现了一些错误,总结一些规律: 一句话概括就是:子类一定会...子类构造函数自动调用super() (也可以手动加上) 但如果父类只有含参数的构造方法,那么子类必须申明一个构造方法,其中
  • Java构造方法super用法

    万次阅读 多人点赞 2016-06-02 11:06:48
    笔者之前一直很疑惑:为什么别人的源代码中的类继承,居然一定...这个是Java的规定:子类继承父类,子类构造方法必须调用super()即父类的构造方法,而且必须放在构造方法的第一行。 那么问题又来,为什么我写的
  • 子类调用父类无参的构造方法,子类构造方法的第一句 super(参数); 子类调用父类有参的构造方法,不需要重新属性赋值,但参数写。 super.method();子类的方法中调用父类的某个方法 子类使用成员变量或super();或...
  • 看到一句话:子类构造方法,不管这个方法带不带参数,默认地它都会去寻找父类的不带参数的构造方法,如果父类没有不带参数的构造方法,那么子类必须要super关键字来调用父类的构造方法,否则编译不能通过。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 460
精华内容 184
关键字:

super子类构造方法必须要