精华内容
下载资源
问答
  • Java为什么要在类中声明一个无参构造方法

    千次阅读 多人点赞 2019-09-03 21:26:28
    Java定义无参构造方法的意义 在Java程序编写,子类的构造方法必定...如果在父类中没有定义无参构造方法的话,编译会报错。 下面是一个实际例子。 class Animal{ // 定义有参的构造方法 Animal(String race){ ...

    Java中定义无参构造方法的意义

    在Java程序编写中,子类的构造方法必定会调用父类的构造方法,如果在子类的构造方法中没有指定调用父类的哪个构造方法,在实例化子类对象时,子类会默认调用父类的无参构造方法。如果在父类中没有定义无参构造方法的话,编译会报错。

    下面是一个实际例子。

    class Animal{
        // 定义有参的构造方法
        Animal(String race){
            System.out.println("I'm a/an "+ race);
        }
    }
    // 定义Dog类,继承自Animal类
    class Dog extends Animal{
        Dog(){
            super("Hasky");
        }
    }
    
    public class Test{
        public static void main(String[] args) {
            Dog dog = new Dog();
        }
    }
    

    上面的Animal类中定义了有参的构造方法,Dog类继承Animal类,并且在构造方法中调用了父类的有参构造方法,结果如下:
    在这里插入图片描述
    如果去掉Dog类的构造方法中对父类有参构造方法调用的语句,那么Dog类在实例化对象时就会默认调用父类的无参构造方法,而由于程序中没有定义Animal类的无参构造方法,故而会导致编译报错。
    在这里插入图片描述
    因此在类中声明一个无参构造函数可以避免其子类在实例化对象时出错。

    展开全文
  • 构造方法定义: 构造方法是一种特殊的方法,它是一个同名且没有返回值类型的方法。对象的创建就是通过构造方法来完成,其功能主要是完成对象的初始化。当实例化一个对象时会自动调用构造方法构造方法和...

    构造方法的定义:

      构造方法是一种特殊的方法,它是一个与类同名且没有返回值类型的方法。对象的创建就是通过构造方法来完成,其功能主要是完成对象的初始化。当类实例化一个对象时会自动调用构造方法。构造方法和其他方法一样也可以重载。

    构造方法的特点:

    1. 构造函数的命名必须和类名完全相同;在java中普通函数可以和构造函数同名,但是必须带有返回值。
    2. 构造函数的功能主要用于在类的对象创建时定义初始化的状态。它没有返回值,也不能用void来修饰。这就保证了它不仅什么也不用自动返回,而且根本不能有任何选择。
    3. 构造函数不能被直接调用,必须通过new运算符在创建对象时才会自动调用;而一般的方法是在程序执行到它的时候被调用的。

    4. 当定义一个类的时候,通常情况下都会显示该类的构造函数,并在函数中指定初始化的工作也可省略,不过Java编译器会提供一个默认的构造函数.此默认构造函数是不带参数的。而一般的方法不存在这一特点。

    class HelloWorld//(Box)
    {
    static int length;
    static int width;
    static int heigth;
    
    void setBox(int l,int w,int h)
    {
    int l1;
    int w1;
    int h1;	
    }
    int volume(int a,int B,int c)
    {
    	int s;
    	s=a*B*c;
    	return s;	
    }
    
    public static void main(String args[]){
    	int S;
    	HelloWorld b=new HelloWorld();
    	b.length=1;
    	b.width=2;
    	b.heigth=4;
    	S= b.volume(length,width,heigth);
    	System.out.println(S);
    }
    }
    Class BankAccount{
    Int acciuntnumber;
    Int leftmoney;
    public double getleftmoney () {     //查询余额
    	System.out.println(leftmoney);
    }
    
    public void savemoney(double money) {   //存款
    leftmoney+=money;
    }
    
    public void getmoney (double money){  //取款
    leftmonney-=money;
    }
    
    public BankAccount (int number, double money){  //默认的构造方法,用来初始化变量 
    acciuntnumber =123456; 
    letfmoney=500;
    }
    
    public static void main(String args[]) {  
    	BlankAccount ba=new BlankAccount(123456,500);
    ba.savemoney(1000); 
      System.out.println("存入1000元后,您的余额为:"+ba.getleftmoney());
      ba.getmoney(2000);
      System.out.println("取款2000元后,您的余额为:"+ba.getleftmoney());
    }
    }

    这两段代码很好的解释了构造方法的特点。


    展开全文
  • 1、一个类中如果没有定义构造方法,默认有一个无参构造方法,其结构格式如下: public 类名(){ super(); } 2、this([参数列表])调用本类构造方法,但必须放在有效代码行的第一行;而super([参数列表])调用父类...

    详述

    1、一个类中如果没有定义构造方法,默认有一个无参构造方法,其结构格式如下:

    	public 类名(){
           super();
        }
    

    2、this([参数列表])调用本类构造方法,但必须放在有效代码行的第一行;而super([参数列表])调用父类构造方法,且也必须放在有效代码的第一行;所以一个构造方法中如果已经调用了本类构造方法,则该构造方法不能直接调用父类构造方法。即一个代码段中,this([参数列表])与super([参数列表]) 只可有一个出现。

    public class Father {//父类
    	
    	public Father() {
    		super();
    		System.out.println("父类构造方法");
    
    	}
    }
    
    public class Son extends Father{//子类
    
    	public Son(){
    		this("Jim");
    		System.out.println("子类构造方法");
    	}
    	public Son(String name) {
    		super();
    		System.out.println(name);
    	}
    }
    
    public class Text {
    	
    	public static void main(String[] args) {
    	
    		   Son son = new Son();
    	    
    	}
    }
    
    

    3、如果子类构造方法没有调用本类构造方法,也没有指定调用父类构造方法,则默认调用父类无参构造方法。
    注意:
    父类中不可能有两个无参构造方法,可理解为,若在类中什么都不写系统会默认赠送一个无参构造方法,但是如果写了一个有参的方法,就不再赠送无参构造方法。

    总结

    a、如果父类 拥有 无参构造方法(无论隐式的还是显式的),且子类中的构造方法又没有明确指定调用父类的哪个构造方法,则子类中没有调用该子类其它构造方法的构造方法使用super()隐式调用父类的无参构造方法

    public class Father {//父类
    	
    	public Father() {
    		super();
    		System.out.println("父类构造方法");
    
    	}
    }
    
    public class Son extends Father{//子类
    
    	public Son(){
    		System.out.println("子类构造方法");
    	}
    	public Son(String name) {
    		this();
    		System.out.println(name);
    	}
    }
    
    public class Text {
    	
    	public static void main(String[] args) {
    	    Son son = new Son("Jim");	    
    	}
    }
    
    

    输出结果为:
    父类构造方法
    子类构造方法
    Jim
    在Text类的main方法中,调用Son(String name)时,this调用了Son()函数,而子类的无参构造方法默认调用父类中的无参构造方法,从而由以上输出结果。

    b、如果父类* 没有* 无参构造方法(无论隐式的还是显式的),则要求子类构造方法必须直接或间接指定调用父类哪个构造方法并且放在有效代码第一行

    public class Father {//父类
    	String height;
    	String name;
    	public Father(String height,String name){
    		this.name = "wjq";
    		this.height = 165;
    	}
    	public Father(String name) {
    		this.name = "wjq";
    	}
    }
    
    public class Son extends Father{//子类
    	String height = "165";
    	String name = "wjq";
    	public Son(String height,String name){
    		super(name);
    		System.out.println(name);
    	}
    	public Son(String name) {
    		this(height,name)
    		System.out.println(name);
    	}
    }
    
    public class Text {
    	
    	public static void main(String[] args) {
    	    Son son = new Son("Jim");	    
    	}
    }
    
    展开全文
  • 15类中构造方法

    2019-06-19 15:24:00
    1.如果类中没有构造方法jvm会再编译的时候就会默认添加一个构造方法. 2.与类同名 3.没有返回类型 4.如果代码中已经定义了有参构造函数,默认的无参构造方法就不添加了. public class Public { public ...

    1.如果类中没有构造方法jvm会再编译的时候就会默认添加一个构造方法.

    2.与类同名

    3.没有返回类型

    4.如果代码中已经定义了有参构造函数,默认的无参构造方法就不添加了.

    public class Public {
    
        public static void main(String[] args) {
    
        }
        public Public() //构造方法 
        {
            
        }
    
    
    }

     如果某个方法是静态 的,它的行为就不具有多态性

     * 构造函数并不具有多态性,它们实际上是static方法,
     * 只不过该static声明是隐式的。因此,构造函数不能够被override。

    转载于:https://www.cnblogs.com/xuwangqi/p/11051559.html

    展开全文
  • 1、一个类中如果没有定义构造方法,默认有一个无参构造方法,其结构如下: /* public 类名(){ super();//该行代码必须放在有效代码行的第一行;调用父类无参构造方法 } */ 其中super()关键字可以省略不写,默认会...
  • 1、一个类中如果没有定义构造方法,默认有一个无参构造方法,其结构如下: public 类名(){ super();//该行代码必须放在有效代码行的第一行;调用父类无参构造方法 } 2、this([参数列表])调用本类构造方法,但...
  • /1、一个类中如果没有定义构造方法,默认有一个无参构造方法,其结构如下: public 类名(){ super();//该行代码必须放在有效代码行的第一行;调用父类无参构造方法 } new Son(); 2、this([参数列表])调用本类构造...
  • 一个类中如果没有定义构造方法,默认有一个无参数构造方法,结构如下: public Fire() { super(); } A.父类无参数构造方法中super();调用Object类中构造方法 B.子类无参数构造方法中super();调用父类中无参数...
  • 1、一个类中如果没有定义构造方法,默认有一个无参构造方法,其结构如下: public 类名(){ super();//该行代码必须放在有效代码行的第一行;调用父类无参构造方法 } new Son(); 2、this([参数列表])调用本类构造...
  • 1.一个类中如果没有定义构造方法,默认有一个无参构造方法,其结构如下: public 类名(){ super();//该行代码必须放在有效代码行的第一行;用来调用父类无参构造方法; } 2.this([参数列表]) 调用本类的构造...
  • 1、如果类中没有定义构造方法,编译器会默认添加一个无参的方法体为空的构造方法;如果类中定义了构造方法,则编译器不再添加默认的构造方法 2、构造方法没有返回值,也不能定义为viod 3、一个类中可以定义多个构造...
  • 构造方法

    2015-11-05 22:16:00
    如果在类定义的构造方法都不是无参构造方法实例化一个对象时,那么编译器也不会为类设置一个默认的无参构造方法,当试图无参构造方法实例化一个对象时,编译器会报错,所以只有在类中没有定义任何构造方法时,编译器...
  • 并且在java如果没有定义构造方法,那么就会默认创建一个无参的构造方法。 构造方法重载 构造方法重载,也和方法重载差不多。方法名相同啦,但是参数类型,个数,顺序至少一个不相同啦。在java,当我们为...
  • 构造方法就是在实例化一个对象的同时自动执行的成员方法,作用就是初始化对象。... 如果类中没有定义构造方法,那么php会自动生成一个,这个自动生成的构造方法没有任何参数,  没有任何操作。  
  • 对象:对象是类的一个实例...如果没有显式地为类定义构造方法,Java编译器将会为该类提供一个默认构造方法。在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法 ...
  • Java中构造方法

    2020-10-25 15:25:58
    一, 方法的定义 类有一种特殊的成员方法叫做构造方法。 作用: 创建对象并初始化成...5.一个类中可也存在多个构造方法,不同方法之间通过入参类型和入参的个数来区分(重载)。 格式 public 类名称(参数类型 参数名) {
  • 1.一个类中如果没有定义构造方法,则默认有一个无参构造方法 默认的无参构造方法结构如下 下述结构同样可以直接自行定义在类中 public 类名(){ super();//此代码必须放在有效代码的第一行,调用父类的无参构造方法...
  • 因为你不可以创建抽象的实例,所以构造函数只能通过构造函数链调用(Java中构造函数链指的是从其他构造函数调用一个构造函数),例如,当你创建具体的实现。现在一些面试官问,如果你不能对抽象实例化那么构造...
  • 构造方法

    2020-04-06 11:19:00
    个类都有构造方法,在创建该类的对象的时候他们将被调用,如果没有定义构造方法,Java 编译器会提供一个默认构造方法。 创建一个对象的时候,至少调用一个构造方法。比如在新建一个对象 new Object(),括号没有...
  • Java 构造方法

    2020-08-04 07:32:47
    如果用户没有定义构造方法,Java会自动提供一个默认的构造方法用于成员变量的初始化。 默认提供的构造方法:可以在.Java文件对应的.class文件找到。 默认提供的构造方法如下: public 类名() { } 构造方
  • 1、 一个类中如果没有定义构造方法,那么会有一个默认的无参构造方法 public 类名(){ super(); //super()只能放在有效代码行第一行 } 2、子类中的构造方法如果没有调用本类的构造方法或者没有明确使用父类中的...
  • 构造方法也是方法,只是一种特殊的方法 一.要点 ...如果我们没有定义构造器,则编译器会自动定义一个无参的构造方法如果已定义则编译器不会自动添加! 4.构造器的方法名必须和类名一致。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,497
精华内容 598
关键字:

一个类中如果没有定义构造方法