在c#中理解面向对象

一直以为自己算是比较理解什么是面向对象了,而在今天写代码的过程中发现了一些问题,原来自己不是那么的懂,整理了一下,给我和需要的朋友一个方便!

       我现在还是一学生,欢迎交流,指教!

和以前一样以问题开头,如何在父窗体中操作子窗体的变量,如何在子窗体中操作父窗体的变量,又如何在这些操作中保持较好的高内聚和低耦合呢?

而这里面就 要提一下面向对象的特点了:封装、继承和多态

**封装**

        在C#中可使用类来达到数据封装的效果,这样就可以使数据与方法封装成单一元素,以便于通过方法存取数据。除此之外,还可以控制数据的存取方式。
在面向对象的世界中,大多数都是以类作为数据封装的基本单位。类将数据和操作数据的方法结合成一个单位。设计类时,不直接存取类中的数据,而是通过方法来存取数据,如此就可以达到封装数据的目的,方便以后的维护升级,也可以在操作数据时多一层判断。
       此外,封装还可以解决数据存取的权限问题,可以使用封装将数据隐藏起来,形成一个封闭的空间,然后就可以设置哪些数据只能在这个空间中使用,哪些数据可以在空间外部使用。如果一个类中包含敏感数据,有些人可以访问,有些人却不能访问。如果不对这些数据的访问加以限制,后果是很严重的。所以在编写程序时,要对类的成员使用不同的访问修饰符,从而定义他们的访问级别。

      在这个使用过程中需要提到一下的是get和set访问器以及字段变量的区别了,这大概是最常用的了吧

class myclass 

    
private int age;//私有的字段 
    public  int Age //属性 
    
        
get 
        

            
return this.age; 
        }
 
        
set 
        

            
this.age=value; 
        }
 
    }
 
}
 

      属性中能实现各种复杂的逻辑,而这些是直接把一个字段共有所不能实现的.从这里就能体现出get和set访问器带来的好处了;

     具体有:

1、属性可以只读或只写,比如下面代码,共有字段变量一定是可读写的。
2、属性可附带错误检查或额外的的代码,共有字段变量的读写不能。
3、虽然这些都是编译器给带来的好处,但封装有很多好处,像细节隐藏,实现隐藏等。比如说有一天人可以活到200岁,更改if(value > 200)不会影响其他调用Age的函数。

class myclass 

    
private int age;//私有的字段 
    public int Age //属性 
    
        
set 
        
{
            
if(value < 0 || value > 200)
            
{
               
throw new Exception("");    // checking
            }
 
            
if(this.age != value)
            
{
               
this.ageChanged = true;        // extra routine
            }

            
this.age=value; 
        }
 
    }
 
}

 总结:属性除了公布字段外,还可以在属性上添加对字段的约束规则,比如只读,只写,读写规则,还可以对属性的值进行逻辑验证等等.另外从软件设计的角度来看,属性是方法,应该被 公开,而字段是数据 ,应该被封装.

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/guozhiming2003/archive/2008/08/15/1268996.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值