当前位置: 首页 > 知识库问答 >
问题:

Java中的“Super”关键字

洪哲彦
2023-03-14

我对java中的super关键字有一个问题。请遵循以下示例:

public class Circle {
private double radius;
private double area; 

public void setRadius(double radius){
    this.radius = 1; 

}
public double getRadius(){
    return this.radius;
}
public void setArea(double radius){
    this.area = area;
}
public double getArea(){
    return this.area = Math.PI * radius * radius;
}
}


public class Cylinder extends Circle {
    private double height;
    public Cylinder(){
        super();
        height = 1;
    }
    public Cylinder(double height){
        super();
        this.height = height;
    }
    public Cylinder(double radius, double height){
        super();
        this.height = height;
        public double getHeight(){
            return height;
        }
    }
public double getVolume(){
    return getArea()*height;
}
}

我的观点是,当我在子类中使用Super()时,java如何知道在我的子类中调用哪个构造函数?因为在我的超类中,我有两个没有参数的构造函数;公共双getRadius()和公共双getArea()

共有2个答案

南宫才英
2023-03-14

构造函数名称将是类名。你在谈论那里的方法。

class classname{

   classname(){// constructor name as class name.
   }

}
季华茂
2023-03-14

在超类中只有一个构造函数,即默认的无参数构造函数,该构造函数未在类中显式定义。子类的每个构造函数都将在超类中调用此构造函数。

getRadius()getArea()只是类中的方法,它们不是构造函数。请记住,构造函数总是采用以下形式:

[access modifier] [Class Name](/* arguments optional*/){}

因此,Circle类的构造函数如下所示:

public Circle(/*Arguments could go here */){

}

如果super类中有多个构造函数,那么假设:

public Circle(int radius){
  //....
}

public Circle(double radius){
  //....
}

编译器将使用这些参数来确定要调用哪个构造函数。

 类似资料:
  • 主要内容:super调用父类构造方法,super访问父类成员,super和this的区别由于子类不能继承父类的构造方法,因此,如果要调用父类的构造方法,可以使用 super 关键字。super 可以用来访问父类的构造方法、普通方法和属性。 super 关键字的功能: 在子类的构造方法中显式的调用父类构造方法 访问父类的成员方法和变量。 super调用父类构造方法 super 关键字可以在子类的构造方法中显式地调用父类的构造方法,基本格式如下: 其中,parameter-list 指定

  • 本文向大家介绍super 关键字的理解相关面试题,主要包含被问及super 关键字的理解时的应答技巧和注意事项,需要的朋友参考一下 super 关键字 super关键字用于从子类访问父类的变量和方法。 例如: 在上面的例子中,Sub 类访问父类成员变量 number 并调用其其父类 Super 的 方法。 使用 this 和 super 要注意的问题: 在构造器中使用 调用父类中的其他构造方法时,

  • 问题内容: 关键字和之间有什么区别? 两者都用来访问类的构造函数吧?你们任何人都可以解释吗? 问题答案: 让我们考虑这种情况 输出将是 第三行正在打印“ animal:eat”,因为我们正在调用。如果我们调用,它将被打印为“ dog:eat”。

  • 当我尝试使用两个参数时,它显示一个错误,并说“Remove argument to match exception”。请有人建议我。

  • 问题内容: 为什么我只能使用通配符而不使用类型参数? 例如,在界面中,为什么方法不是这样写的 问题答案: super绑定命名类型参数(例如)而不是通配符(例如)是非法的,这仅仅是因为即使允许,它也不会执行你希望的操作,因为既然这是所有引用类型的最终值,一切是,实际上有没有约束。 在你的特定示例中,由于任何引用类型的数组都是(通过Java数组协方差),因此可以在编译时用作(如果这样的绑定是合法的)自

  • 本文向大家介绍java 关键字super详解及用法,包括了java 关键字super详解及用法的使用技巧和注意事项,需要的朋友参考一下 java 关键字super详解 一、super关键字     在JAVA类中使用super来引用父类的成分,用this来引用当前对象,如果一个类从另外一个类继承,我们new这个子类的实例对象的时候,这个子类对象里面会有一个父类对象。怎么去引用里面的父类对象呢?使用