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;
     }

 }

}