面向对象之属性的理解
2015-04-24 21:10
155 查看
1.定义一个Person类中,我们使用公共的字段进行赋值,如下所示:
上述的字段在任何类中都可以访问。因此,在Main方法中有:
其输出的的结果为:打印姓名Grenn,打印年龄12,打印性别男。
2.当然,为什么要引入字段,是因为此时的字段是公共的,任何类都可以访问此字段。因此,我们有时必须保证字段的数据不被其他的类访问,因此,属性就提出来了。
其实,属性他的作用是判断字段,其处理的结果也最终归结到字段的方法;它有两个方法get和set方法;
其反编译的结果为
所以,我们很容易看出属性的作用就是保护字段,不要字段直接和对象中的数据进行交互。让属性干这些事。
因此,当我们用set方法时用我们调用set{ }方法,取值的时候调用get{ }的方法;
如下是属性的用法:
在Main方法中:
打印的结果为:
打印姓名Green,打印年龄0,打印性别男。
其实,再详细点就是p2.Name=”Green”是将”Green“传给Value;并传至set方法中判断。而this.Name其实就是将字段_name=value值传递给get方法来判断。
在整个过程中,属性是没有值的,打印的是字段的值。
Class Person { public string _name; public int _age; public char _gerder; public void Method() { Console.Writeline("打印姓名{0},打印年龄{1},打印性别{2}",this._name,this._age,this._gender); } }
上述的字段在任何类中都可以访问。因此,在Main方法中有:
Person p1=new Person(); p1._name="Grenn"; p1._age=12; p1._gender='男'; p1.Method(); Console.ReadKey();
其输出的的结果为:打印姓名Grenn,打印年龄12,打印性别男。
2.当然,为什么要引入字段,是因为此时的字段是公共的,任何类都可以访问此字段。因此,我们有时必须保证字段的数据不被其他的类访问,因此,属性就提出来了。
其实,属性他的作用是判断字段,其处理的结果也最终归结到字段的方法;它有两个方法get和set方法;
其反编译的结果为
//get本质方法,其实就是取出一个字段。 public string get_Name() { return this._name; } //set的本质方法,其实就是赋值从main方法中对象的值。 public void set_Name(string value) { this._name = value; }
所以,我们很容易看出属性的作用就是保护字段,不要字段直接和对象中的数据进行交互。让属性干这些事。
因此,当我们用set方法时用我们调用set{ }方法,取值的时候调用get{ }的方法;
如下是属性的用法:
Class Person { private string _name; private int _age; private char _gender; public string Name { get{return _name;} set{_name=value;} } pulbic int Age { get{return _age; } set{ if(value>100||value<0)//value是main方法中所传来的值,说得透彻一点,就是p1.Age=-12;其实就是value值 { _age=0; } _age=value; } public char Gender { get { if(_gender!='男'&& _gender!='女') { return _gender='男'; } return _gender; } set{_gender=value;} public void Method() { Console.WriteLine("打印姓名{0},打印年龄{1},打印性别{2}",this.Name,this.Age,this.Gender);//this为当前对象所指的数据; } }
在Main方法中:
Person p2=new Person(); p2.Name="Green"; p2.Age=-12;//赋值vlaue=-12; p2.Gender='未知'; p2.Method(); Console.ReadKey();
打印的结果为:
打印姓名Green,打印年龄0,打印性别男。
其实,再详细点就是p2.Name=”Green”是将”Green“传给Value;并传至set方法中判断。而this.Name其实就是将字段_name=value值传递给get方法来判断。
在整个过程中,属性是没有值的,打印的是字段的值。
相关文章推荐
- 面向对象的程序设计——(一)理解对象的属性以及属性的特性
- 面向对象银角大王补充2-self就是调用当前方法的对象-静态字段,公有属性-封装的理解-继承的理解,普通方法,静态方法
- .Net学习笔记4-C#面向对象基础1 类和属性
- php面向对象中static静态属性和静态方法的调用
- javascript面向对象属性函数用法(defineProperty与getOwnPropertyDescriptor)
- javascript面向对象属性函数用法(defineProperty与getOwnPropertyDescriptor)
- 黑马程序员--Java面向对象理解
- php面向对象中static静态属性和静态方法的调用
- 理解面向对象
- iOS 高级开发技巧 2.对象、消息、运行期 (一) 理解属性这一概念
- 理解类、对象、属性、方法案例初探:点、线、面(类图,包,JavaDoc)
- 【面向对象基础】| 面向对象设计的六原则理解和区别
- JavaScript之理解对象(面向对象的程序设计)
- 理解ES6 第三章:对象 ---Object.assign给对象添加多个属性, super, 原型。。。
- 面向对象概念:字段、属性和方法
- python面向对象中的__init__方法怎么理解?
- Java的面向对象理解
- java web开发工程师 对面向对象思想 的不理解
- OOP----java面向对象理解
- 浅谈对面向对象概念的理解