提问人:Ayoub Bentameur 提问时间:9/28/2022 更新时间:10/17/2022 访问量:147
为什么我们不能在构造函数重载中使用多个this()?
why we can't use multiple this() in Constructor Overloading?
问:
我是这个世界的新手,目前我正在学习 Java,我想知道为什么我不能在构造函数中使用多个 this(),有人可以告诉我为什么?
public class Student {
private String name;
private int age;
public Student(String name) {
System.out.println("Name of Student : " + name);
}
public Student(int age)
{
System.out.println("Age of student = " + age);
}
public Student()
{
this("Alex");
this(22); //Error in this line:Call to 'this()' must be first statement in constructor body
}
public static void main(String[] args){
Student student=new Student();
}
}
答:
从一个新手 java 编码员到另一个新手的类比:
您登录您的星巴克应用程序,希望下一个新的饮料订单。(1) 如果您在星冰乐图像上点击“一键购买!”,它将创建一个包含星冰乐的新订单,完成订单,然后一次性下达。(2)或者,您只需单击“开始新订单”按钮,您的购物车中就没有任何东西了。第二个选项是你选择在代码中执行的操作。请记住:“new Student();”是一个新订单,因为只有一个新关键字。
如果您曾经尝试过下订单,您就会知道,如果订单不包含任何内容,您就无法下订单。因此,它不会立即将其发送到您的星巴克门店,而是让您有机会将商品添加到您的订单中。您想要的订单中的所有内容都位于括号 () 之间。当你打电话给“this(”Alex“);”时,你实际上是在用一种“Alex”饮料填充你的订单,然后放下它,因为你关闭了括号(告诉应用程序,“这是我的购物车里的东西”)。
当您调用“this(22)”时,您的代码会感到困惑,因为您正在尝试将 22 杯饮料添加到您已经下达的订单中。您不能点一杯饮料,然后在 5 分钟后,在同一订单中添加另一杯饮料。
建议:创建一个构造函数 Student(name, age) 并调用 this(“Alex”, 22)。
或者:在 Student(String) 中调用 this(22)!
使用此关键字在其他构造函数中调用当前类构造函数的主要目的。
您可以在构造函数的第一行中调用当前类构造函数,否则会出现编译时错误。
如果创建对象以首先调用构造函数,请检查它们是否存在任何当前类构造函数,如果存在,请首先执行构造函数,然后执行此构造函数。
为什么我们不能在一个构造函数中使用多个this()?因为在构造函数内部,您可以一次调用一个构造函数。
评论
this(..)
Student(String name, int age) constructor though and then call that using