黑马程序员技术交流社区

标题: 构造方法和属性的区别 [打印本页]

作者: wang29901    时间: 2013-11-27 13:32
标题: 构造方法和属性的区别
本帖最后由 wang29901 于 2013-11-27 17:29 编辑

构造方法和属性的区别

作者: 许庭洲    时间: 2013-11-27 14:16
1.构造函数用于执行类的实例的初始化;
2. 在访问一个类的时候,系统将最先执行构造函数中的语句;
3. 属性是对现实世界中实体特征的抽象,它提供了对类或对象性质的访问;
4. 在属性的访问声明中,对属性的值的读操作用get关键字标出,对属性的值的写操作用set关键字标出。

作者: 许杰    时间: 2013-11-27 14:20
属性和构造函数都是方法。
public string S {get;set;}
在c#内部会出现某个字段,以及用来get和set这个字段的方法,分别对应于 属性S的get和set。
所以,属性和构造函数的区别,仅仅是一般方法和构造方法的区别而已。构造函数是在执行类的实例时初始化,系统在执行到类时会最先执行构造方法,没有写构造方法时默认执行无参的构造方法。

作者: xydsdsr    时间: 2013-11-27 15:24
public string Version {get;set;} 就是个属性,调用方法和字段差不多,但是底层实际编译成两个方法set_Version(string value)和string get_Version(); ,比如this.Version = "3",实际上是this.set_Version("3")。
构造函数就是和类同名的一个方法,比如new MyClass(“123”) 的时候就会调用构造函数初始化,public MyClass(string data) 参数data就会是“123”这个值传进来。
作者: 黑马—严守卫    时间: 2013-11-27 16:12
属性和构造函数:
    1、属性:不能无返回值(void);只能有get/set语句;不能使用参数。
    2、构造函数:静态构造函数不能有修饰符、不能有参数;实例构造函数名称与类名相同、没有返回值、可以带参数和重载
作者: u010209195    时间: 2013-11-27 16:26
构造方法
实例构造函数用于创建和初始化实例。创建新对象时将调用类构造函数,例如:
  1. class CoOrds
  2. {
  3.     public int x, y;

  4.     // 构造函数
  5.     public CoOrds()
  6.     {
  7.         x = 0;
  8.         y = 0;
  9.     }
  10. }
复制代码

为了清楚起见,此类包含公共数据成员。建议不要使用这种编程方法,因为它使程序中任何位置的任何方法都可以不受限制、不经验证地访问对象的内部组件。数据成员通常应当为私有的,并且只应当通过类方法和属性来访问。【意思就是只要实例化一个类,就会调用该方法,x,y就会被赋值为0】
还可以这样带参数的构造方法
  1. // 含有两个参数的构造方法:
  2. public CoOrds(int x, int y)
  3. {
  4.     this.x = x;
  5.     this.y = y;
  6. }
复制代码

这样便可以用默认或特定的初始值创建 CoOrd 对象,如下所示:
  1. CoOrds p1 = new CoOrds();
  2. CoOrds p2 = new CoOrds(5, 3);
复制代码

作者: u010209195    时间: 2013-11-27 16:45
属性结合了字段和方法的多个方面。对于对象的用户,属性显示为字段,访问该属性需要相同的语法。对于类的实现者,属性是一个或两个代码块,表示一个 get 访问器和/或一个 set 访问器。当读取属性时,执行 get 访问器的代码块;当向属性分配一个新值时,执行 set 访问器的代码块。不具有 set 访问器的属性被视为只读属性。不具有 get 访问器的属性被视为只写属性。同时具有这两个访问器的属性是读写属性。
属性可以进行非法值的输入控制属性具有多种用法:它们可在允许更改前验证数据;它们可透明地公开某个类上的数据,该类的数据实际上是从其他源(例如数据库)检索到的;当数据被更改时,它们可采取行动,例如引发事件或更改其他字段的值。
属性在类块中是按以下方式来声明的:指定字段的访问级别,接下来指定属性的类型和名称,然后跟上声明 get 访问器和/或 set 访问器的代码块。例如:
  1. public class Date
  2. {
  3.     private int month = 7;  

  4.     // 属性,支持存储
  5.     public int Month
  6.     {
  7.         get
  8.         {
  9.             return month;
  10.         }
  11.         set
  12.         {
  13.             if ((value > 0) && (value < 13))
  14.             {
  15.                 month = value;
  16.             }
  17.         }
  18.     }
  19. }
复制代码

作者: 毛毛毛玉    时间: 2013-11-27 18:37
构造方法是创建对象时被自动调用的一个方法。
一个类的构造方法,是用来初始化该类的对象的。

而属性,则是提供了赋值和取值两个操作,供用户自己来写。用户可以对这个属性赋值或者取值,然后属性再根据自己的get和set来确定自己要做什么。要怎样修改怎样的数据,要返回怎样的数据。
而属性,更多是用来保护字段的,以免字段被非法的赋值或者是限制用户的取值一类的……
作者: §風過無痕§    时间: 2013-11-27 21:29
方法:行为
属性:特征

属性本质也就是方法
作者: Sayme    时间: 2013-11-27 22:19
构造方法 是把类初始化 也就是说在实例的时候给里面的属性初始化

属性.....是类里面可以进行读写操作的字段...




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2