本人刚学java,菜鸟一个,有一个疑问:在下面这个代码里面,为什么没有把构造方法(have override)也打印出来? 我明明已经在构造方法里面写了打印的命令代码了,目前只是把主方法里面的命令打印出来了:
package Problem;
public class  TestOverride{
private String name;
private int age=10;
 public TestOverride(){

}
 
public TestOverride(String name){
this.name=name; System.out.println("have override");
}public static void main(String[]args){

System.out.println("have been override");

}

}

解决方案 »

  1.   

    你main方法里面从来没有构造TestOverride对象,肯定没有执行构造方法,改成下面代码试试
    package Problem;
    public class TestOverride{
    private String name;
    private int age=10;
     public TestOverride(){}
     
    public TestOverride(String name){
    this.name=name;System.out.println("构造方法输出:have override");
    }public static void main(String[]args){new  TestOverride("demo")System.out.println("have been override");}}
      

  2.   

    public TestOverride(String name){
    this.name=name;System.out.println("have override");
    }
    并没有调用
    String str ="";
    new TestOverride(str);
    这样才行
      

  3.   

    只有在main函数内构造test5的对象,才会输出
      

  4.   

    public static void main(String[]args){
       //创建对象,调用构造方法TestOverride(),不会打印
        TestOverride toNotPrint = new TestOverride();   //创建对象,调用构造方法TestOverride(String name),会打印
       TestOverride toPrint = new TestOverride("");   //直接打印,与对象无关
       System.out.println("have been override");}
      

  5.   

    你没有在main方法里头引用构造方法构造函数只有在你创建对象是才被应用,你这里还用了重载。
    如果要用
    public TestOverride(String name){
    this.name=name;System.out.println("have override");
    }它来生成对象,还必须传入相应的参数;在main方法中加入new TestOverride("name");
    就行了