首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Java类中,具有super()函数调用的构造函数与没有超级()函数调用的构造函数之间有什么区别?

在Java类中,具有super()函数调用的构造函数与没有超级()函数调用的构造函数之间有什么区别?
EN

Stack Overflow用户
提问于 2015-08-27 17:05:58
回答 5查看 492关注 0票数 1

这两个构造函数之间有什么区别。

代码语言:javascript
复制
public Students(String name, String address) {
    super();
    this.name = name;
    this.address = address;
}

/*Here is constructor without super function call.*/
public Students(String name, String address) {
    this.name = name;
    this.address = address;
}
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-08-27 17:10:31

如果没有对超类构造函数的显式调用,编译器将生成对super()的调用。正因为如此,你们的例子没有区别。

票数 3
EN

Stack Overflow用户

发布于 2015-08-27 17:09:50

没有区别,这只是一个明示和含蓄的问题。在第二种情况下,如果从父类继承的话,它会隐式调用这个学生类的超级构造函数。读更多关于这个的文章。你可以找到更多的信息,如果你谷歌它。

代码语言:javascript
复制
public class A {
    //there is a hidden constructor. Even if you explicitly write it  
    //public A(){
    //}
}

public class B extends A {
 private int i;


public B(int x){
   this.i = x;
}

}

创建对象表单B时,首先隐式调用A的构造函数。但是您可以显式地指定它。

作为

代码语言:javascript
复制
public B(int x){
       super();
       this.i = x;
}
票数 2
EN

Stack Overflow用户

发布于 2015-08-27 17:27:58

有超功能的构造和没有超功能的构造有什么区别?

它可以很容易的测试。在这个案件中,它们实际上是一样的。更重要的是,您可能想知道何时以及如何使用超级

运行以下代码:

代码语言:javascript
复制
public class Test
{             
    public static void main(String[] args) 
    {       
        new Students("a", "b");
    } 
}

class Parent
{
    public Parent(){
        System.out.println("Parent class constructor invoked");
    }
}       

class Students extends Parent
{
    String name;
    String address;

    public Students(String name, String address) {
        super();
        this.name = name;
        this.address = address;
    }
}

输出:调用父类构造函数

现在我们删除super()

代码语言:javascript
复制
class Students extends Parent
{
    String name;
    String address;

    public Students(String name, String address) {
        this.name = name;
        this.address = address;
    }
}

输出:调用父类构造函数

就像类是如何隐式扩展到Object一样,即使您没有将它们扩展到某些东西。“默认情况下”,如果您没有给出一个构造函数,那么每个构造函数中都会调用一个super();

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32255478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档