Java 如果存在用户定义的构造函数,则无法使用默认构造函数
如果已经定义了用户定义的构造函数,而我无法使用提供的默认构造函数,那么我们似乎不得不使用用户定义的构造函数 如果没有提供用户定义的构造函数,我可以这样做(默认构造函数)Java 如果存在用户定义的构造函数,则无法使用默认构造函数,java,debugging,exception,constructor,Java,Debugging,Exception,Constructor,如果已经定义了用户定义的构造函数,而我无法使用提供的默认构造函数,那么我们似乎不得不使用用户定义的构造函数 如果没有提供用户定义的构造函数,我可以这样做(默认构造函数) Student s = new student() ; 一旦用户定义的构造函数被提供,我就不能再做了,这和C++不同,在这里我仍然可以使用提供的< /P>构造函数。 我定义了构造函数但无法执行的代码示例Student s=new Student() 我的分析正确吗?为什么是这样?您需要了解,如果您未能提供自己的构造函数,默认
Student s = new student() ;
一旦用户定义的构造函数被提供,我就不能再做了,这和C++不同,在这里我仍然可以使用提供的< /P>构造函数。 我定义了构造函数但无法执行的代码示例
Student s=new Student()
我的分析正确吗?为什么是这样?您需要了解,如果您未能提供自己的构造函数,默认构造函数仅由Java编译器提供。一旦您这样做了,您还需要提供一个无参数构造函数。这让新程序员感到困惑,但如果你仔细想想,它实际上是很有意义的——你真的希望Java在不受控制的情况下为你创建东西吗?你需要理解,如果你没有提供自己的构造函数,默认构造函数只由Java编译器提供。一旦您这样做了,您还需要提供一个无参数构造函数。这让新程序员感到困惑,但如果你仔细想想,它实际上是很有意义的——你真的希望Java在不受控制的情况下为你创建东西吗?如果你想使用
Student s=new Student()
,只需在Stundent
-类中定义第二个构造函数,不带参数:
公立学生(){}
如果要使用Student s=new Student()
,只需在Stundent
-类中定义第二个构造函数,不带参数:
公立学生(){}
这种行为有很好的理由
如果您想防止开发人员意外创建一个没有姓名和标记的学生,该怎么办?如果Java总是添加自己的构造函数,那么无论您编写了什么构造函数,您都无法做到这一点。这种行为有很好的理由
如果您想防止开发人员意外创建一个没有姓名和标记的学生,该怎么办?如果java总是添加自己的构造函数,那么不管C++的构造函数是什么,都不能完成。如果定义了自己的构造函数,则不提供默认构造函数。C++具有相同的行为!如果定义了自己的构造函数,则不提供默认构造函数。C++具有相同的行为!感谢索蒂里奥斯澄清我的答案:)感谢索蒂里奥斯澄清我的答案:)
package javaapplication1;
import java.util.*;
import java.io.*;
import java.lang.*;
public class JavaApplication1
{
public static void main(String[] args)
{
Student s = new Student(); // will get compiler error
System.out.println(s.getname());
}
public static class Student
{
private String name;
private int mark;
public Student(String namevalue , int markvalue) // user defined constructor
{
name = namevalue;
mark = markvalue;
}
public String getname()
{
return name;
}
public void setname(String value)
{
name = value;
}
}
}