构造函数的有参和无参的区别,构造函数的参数是派什么用场的?
列题: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#编译器会为其自动生成一个默认的无参的构造函数。
参考资料:百度百科——构造函数
2024-11-19 广告
在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运算符一起使用在创建对象的语句中。
特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。