构造函数的有参和无参的区别,构造函数的参数是派什么用场的?
列题:class Shape
{
protected int x;
protected int y;
public Shape(){}
public Shape(int x,int y)
{
this.x = x;
this.y = y;
}
public void draw()
{
System.out.println("draw Shape\n"+ "x:" + this.x + "\n" + "y:" + this.y);
}
}
class Circle extends Shape
{
protected float r;
public Circle()
{
super(1,1);
}
public Circle(int x,int y,float r)
{
super(x,y);
this.r = r;
}
public void draw()
{
System.out.println("draw Circle"+ "\nx:" + this.x +"\ny:" + this.y + "\nr:" + this.r);
}
}
class Rectangle extends Circle
{
private float width;
private float height;
public Rectangle()
{
r = 1.0f;
}
public Rectangle(int x,int y,float r,float width,float height)
{
super(x,y,r);
this.width = width;
this.height = height;
}
public void draw()
{
System.out.println("draw Rectangle\n"+ "x:" + this.x + "\ny:" + this.y +"\nr:" + this.r + "\nwidth:" + this.width + "\nheight:" + this.height);
}
}
区别:
1.如果在创建对象时不写参数,调用的就是无参的构造方法。可是如果你写的有有参的构造方法,而没有无参的构造方法,那么再“创建对象时不写参数”就会报错,程序会认为你知道该怎么做。
如果构造方法有参数,在创建对象时传入了参数,那么就会调用此方法,这一点和重载类似。
2.没有参数的构造函数就是默认构造函数。
有参数的构造函数可用传递的参数给类中的属性赋初始值或执行初始化操作例如订阅事件等。
构造函数是在创建给定类型的对象时执行的类方法。构造函数具有与类相同的名称,它通常初始化新对象的数据成员。
任何时候,只要创建类或结构,就会调用它的构造函数。类或结构可能有多个接受不同参数的构造函数。构造函数使得程序员可设置默认值、限制实例化以及编写灵活且便于阅读的代码。
如果没有为对象提供构造函数,则默认情况下 C# 将创建一个构造函数,该构造函数实例化对象,并将所有成员变量设置系统指定的默认值。静态类和结构也可以有构造函数。
主要特点
1.构造函数的命名必须和类名完全相同。在java中普通函数可以和构造函数同名,但是必须带有返回值;
2.构造函数的功能主要用于在类的对象创建时定义初始化的状态。它没有返回值,也不能用void来修饰。这就保证了它不仅什么也不用自动返回,而且根本不能有任何选择。而其他方法都有返回值,即使是void返回值。尽管方法体本身不会自动返回什么,但仍然可以让它返回一些东西,而这些东西可能是不安全的;
3.构造函数不能被直接调用,必须通过new运算符在创建对象时才会自动调用;而一般的方法是在程序执行到它的时候被调用的;
4.当定义一个类的时候,通常情况下都会显示该类的构造函数,并在函数中指定初始化的工作也可省略,不过Java编译器会提供一个默认的构造函数.此默认构造函数是不带参数的。而一般的方法不存在这一特点;
5.构造函数有回滚的效果,构造函数抛出异常时,构造的是一个不完整对象,会回滚,将此不完整对象的成员释放(c++)
6.当一个类只定义了私有的构造函数,将无法通过new关键字来创建其对象,当一个类没有定义任何构造函数,C#编译器会为其自动生成一个默认的无参的构造函数。
参考资料:百度百科——构造函数
在java中,构造函数在对象创建时自动调用执行,常用来给类的成员变量赋初始值。有参表示新建对象的时候可以有参数。
构造函数的参数允许你根据实际需要灵活输入参数值,增加了方法的复用性,减少了冗余代码,增加了代码的执行效率。
这段代码的输出是
draw Rectangle
x=1
y=1
r=1.0
width=0.0
height=0.0
draw Rectangle
x=2
y=3
r=5
width=10
height=11
扩展资料:
构造函数的特点:
1、构造函数的命名必须和类名完全相同。在java中普通函数可以和构造函数同名,但是必须带有返回值。
2、构造函数的功能主要用于在类的对象创建时定义初始化的状态。它没有返回值,也不能用void来修饰。这就保证了它不仅什么也不用自动返回,而且根本不能有任何选择。
而其他方法都有返回值,即使是void返回值。尽管方法体本身不会自动返回什么,但仍然可以让它返回一些东西,而这些东西可能是不安全的。
3、构造函数不能被直接调用,必须通过new运算符在创建对象时才会自动调用;而一般的方法是在程序执行到它的时候被调用的。
4、当定义一个类的时候,通常情况下都会显示该类的构造函数,并在函数中指定初始化的工作也可省略,不过Java编译器会提供一个默认的构造函数.此默认构造函数是不带参数的。而一般的方法不存在这一特点。
5、构造函数有回滚的效果,构造函数抛出异常时,构造的是一个不完整对象,会回滚,将此不完整对象的成员释放(c++)。
6、当一个类只定义了私有的构造函数,将无法通过new关键字来创建其对象,当一个类没有定义任何构造函数,C#编译器会为其自动生成一个默认的无参的构造函数。
7、在Python中构造函数必须通过重写__init__方法实现。
参考资料:百度百科-构造函数
在java中,构造函数在对象创建时自动调用执行,常用来给类的成员变量赋初始值。
构造函数的参数允许你根据实际需要灵活输入参数值,增加了方法的复用性,减少了冗余代码,增加了代码的执行效率。
以你的代码为例Rectangle rectangle = new Rectangle();
rectangle.draw();
rectangle = new Rectangle(2, 3, 5, 10, 11);
rectangle.draw();
这段代码的输出是
draw Rectangle
x:1
y:1
r:1.0
width:0.0
height:0.0
draw Rectangle
x:2
y:3
r:5
width:10
height:11
扩展资料
都在对象被构造的时候被调用,只是在构造对象时根据new对象的参数类型和个数进行选择对应的构造方法进行调用,当没有参数时调用无参构造方法,有参数时调用对应的有参构造方法。
构造函数的参数一般用来初始化类的数据成员。
构造函数的特点及作用:
构造函数的命名必须和类名完全相同。
2. 构造函数的功能主要用于在类的对象创建时定义初始化的状态。它没有返回值,也不能用void来修饰。
3. 构造函数不能被直接调用,必须通过new运算符在创建对象时才会自动调用。
4. 当定义一个类定义的时候,通常情况下都会默认一个构造函数,此默认构造函数是不带参数的。当自定义了含参构造函数时,默认构造函数将需要手动书写出来。
本回答被网友采纳都在对象被构造的时候被调用,只是在构造对象时根据new对象的参数类型和个数进行选择对应的构造方法进行调用,当没有参数时调用无参构造方法,有参数时调用对应的有参构造方法。构造函数的参数一般用来初始化类的数据成员。
构造函数的特点及作用:
构造函数的命名必须和类名完全相同。
构造函数的功能主要用于在类的对象创建时定义初始化的状态。它没有返回值,也不能用void来修饰。
构造函数不能被直接调用,必须通过new运算符在创建对象时才会自动调用。
当定义一个类定义的时候,通常情况下都会默认一个构造函数,此默认构造函数是不带参数的。当自定义了含参构造函数时,默认构造函数将需要手动书写出来。
在java中,构造函数在对象创建时自动调用执行,常用来给类的成员变量赋初始值。
构造函数的参数允许你根据实际需要灵活输入参数值,增加了方法的复用性,减少了冗余代码,增加了代码的执行效率。
以你的代码为例
Rectangle rectangle = new Rectangle();
rectangle.draw();
rectangle = new Rectangle(2, 3, 5, 10, 11);
rectangle.draw();
这段代码的输出是
draw Rectangle
x:1
y:1
r:1.0
width:0.0
height:0.0
draw Rectangle
x:2
y:3
r:5
width:10
height:11
拓展资料
构造函数 ,是一种特殊的方法。
主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。
特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。
本回答被网友采纳构造函数的有参和无参的区别,构造函数的参数是派什么用场的?
区别:1.如果在创建对象时不写参数,调用的就是无参的构造方法。可是如果你写的有有参的构造方法,而没有无参的构造方法,那么再“创建对象时不写参数”就会报错,程序会认为你知道该怎么做。如果构造方法有参数,在创建对象时传入了参数,那么就会调用此方法,这一点和重载类似。2.没有参数的构造函...
在C++中构造函数的有参和无参的区别
也没多大区别,有参的可以定义的时候传递参数,无参的可以定义变量为默认值,或者输入参数。两者都可以实现相同的功能,一般有参的方便一点,定义的时候就可以赋初值。也可以两个同时用,实现多态性。
什么是构造拷贝函数,初学者,求详细简单的讲解
构造函数:与类名同名的类成员函数叫类的构造函数。构造函数的作用是用来编写初始化类成员变量的代码。构造函数分为无参构造函数和有参构造函数,构造函数用于创建对象时调用。无参构造函数 无参构造函数又称默认构造函数 无参构造函数的定义:class MyClass{public: MyClass()\/\/与类名同名叫类的构...
java 构造方法可以有参数吗
构造方法,是你在构造一个对象时调用的方法,使用一个无参的构造方法就好比你创造了一个空的壳,具体的数据要等到你使用的时候再把值放到你创造出来的壳里面,而你也可以选择调用一个有参的构造函数,在创建的时候就把部分的值给他加上去。重载是指方法名字一样,而方法里面的参数的类型或数量不同。...
c++中缺省构造函数与无参构造函数有什么区别?
无参构造函数一定是缺省构造函数,这意味着它在未提供任何参数时被调用,无需显式声明。反之,若构造函数具有默认值的参数,它虽在无需提供参数时也能被调用,但本质并非缺省构造函数,因为其内部有参数存在。缺省构造函数的独特之处在于,当构造函数的参数全部具有默认值时,无需提供任何参数就能调用该...
c++中什么时候调用构造函数和析构函数
A a ; 定义一个对象a的时候, 就调用构造函数,默认构造函数都是无参数的 ,构造函数就相当给对象a初始化而已,就相当于c语言中 int a = 3 初始化a的值而已,以为你在类中是不能直接给private中的类成员赋值的,所以就靠构造函数,不过要注意有参构造和无参构造,默认都是无参的,比如你A ...
c++什么叫构造函数,它的作用是什么
构造函数的作用:初始化对象的数据成员。二、 构造函数的种类class Complex { private : double m_real; double m_imag;public: \/\/ 无参数构造函数 \/\/ 如果创建一个类你没有写任何构造函数,则系统会自动生成默认的无参构造函数,函数为空,什么都不做 \/\/ 只要你写了一个下面的某一种构造函数,系统就不会再自...
...有参数的构造函数 ,是否必须定义空参数构造函数??
不用了,因为你自己定义了有参的构造函数以后,其实已经调用了无参的构造函数(其实你自己写的构造函数会默认调用this();方法,只不过写不写都一样,不信你在你的有参构造的第一句,必须第一句,写this();试试),自己定义了有参构造函数以后,就必须用有参构造函数来初始化了,这个你懂得 ...
Java构造函数 为什么需要无参构造函数
时,此时编译器才会报错,因为找不到这个无参的构造函数。也就是说当一个类你没有给他构造函数,则编译器会自动补上一个无参的,若有的话就不会,你需要显示将此无参的构造函数写出来。另一个问题:无参的构造函数,只是为了比较好的构造类(new),具体情况要根据你的类是如何设计的,呵呵。
无参构造函数和默认构造函数的区别
无参构造函数是自己定义的构造函数,只是构造函数是没有参数的,不用向函数传递数值或地址。默认构造函数是当没定义构造函数的情况下,系统编译时默认定义的构造函数,该构造函数只能给对象开辟地址空间,不会完成初始化!参考资料:我的大脑