黑马程序员技术交流社区
标题:
构造函数的好处是什么
[打印本页]
作者:
细水长流
时间:
2014-7-28 16:48
标题:
构造函数的好处是什么
本帖最后由 细水长流 于 2014-7-30 10:24 编辑
如题 求通俗易懂的答案,最好有例子 多谢各位大神
作者:
许庭洲
时间:
2014-7-28 16:52
本帖最后由 许庭洲 于 2014-7-28 16:57 编辑
1. 构造函数用于执行类的实例的初始化。
2.每个类都有构造函数,即使没有声明它,编译器也会自动地为程序员提供一个默认的构造函数。
3.在访问一个类的时候,系统将最先执行构造函数中的语句。
4.实际上,任何构造函数的执行都隐式地调用了系统提供默认的构造函数base().
5.下面例子示范了构造函数的使用:
class A
{
int x=0,y=0,count;
public A()
{
count = 0;
}
public A(int vx,int vy)
{
x=vx;
y=vy;
}
}
作者:
qsq0000hm
时间:
2014-7-28 17:24
构造函数是类在实例化一个对象的时候调用的。每个类都会有一个默认无参数的构造函数。
至于构造函数的好处,它是在类实例化一个对象的时候,对这个对象进行初始化。比如定义了一个类
class Student
{
string name;
public string Name
{
get{return name}
}
}
这个学生类中有一个姓名的属性,并且是只读的,只读就保证了名字一旦初始化创建就不能随意修改。
如果在student s1=new student();
s1.Name="张三";是会报错的,会提示你Name这个属性是只读的,那么我们就可以通过构造函数来对Name属性进行初始化了。但是在student类中需要重载一个构造函数。
class Student
{
string name;
public student(string name)
{
this.name=name;
}
public string Name
{
get{return name}
}
}
那么我们在创建一个学生对象的时候通过:student S=new student("张三");这里调用了我们重载的一个参数的构造方法,来对只读的name进行初始化。
作者:
_xixi_
时间:
2014-7-28 17:43
1、可以灵活对多个属性进行赋值,如果一个类 P ,有A、B、C多个属性分别封装a、b、c多个字段,当然你可以直接给字段赋初始值,但是这样局限性过高,毕竟你不能保证你每次new的一个对象里面的属性都是同一个值。如果你使用一个有多个参数的构造方法,就可以随心所欲的给属性赋值。
2、每次new一个对象,可能字段没有赋初始值(值类型默认是0,引用类型默认是null),由于这时首先调用该类的构造函数,可以保证用户在new一个对象的时候必须对某一个属性进行赋值,也避免了多次通过 实例名 . 属性 的方式为每个实例的属性赋初始值
作者:
rende1991
时间:
2014-7-29 04:59
构造函数:就是以类名作为函数名的方法。
比如:
class Person
{
person() {} //无惨构造函数
person(string name,int id){}有参构造函数
}
构造函数可以理解为方法重载,就是方法名相同,参数个数或类型不同,这样的构造函数分别实现你想要的功能,
作者:
细水长流
时间:
2014-7-30 10:24
_xixi_ 发表于 2014-7-28 17:43
1、可以灵活对多个属性进行赋值,如果一个类 P ,有A、B、C多个属性分别封装a、b、c多个字段,当然你可以直 ...
懂了 多谢 你这个答案 感觉答在了点子上
作者:
小笨
时间:
2014-8-2 14:04
1)对多个属性进行赋值时,不需要重复的写实例名 2)可以保证用户在new一个对象的时候必须对某一个属性进行赋值 3)和第2类似,在创建对象时,对只读属性进行初始化
作者:
邢凯
时间:
2014-8-2 14:09
进来学习学习
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2