博客统计信息

51cto推荐博客
用户名:catmao
文章数:29
评论数:33
访问量:16806
无忧币:656
博客积分:836
博客等级:4
注册日期:2009-12-29

我的技术圈(1)

更多>>
面向对象关于类的一点心得
2009-12-31 00:52:31
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://catmao.blog.51cto.com/1130511/252924
实际上按照顺序不应该写这章,不过我我晚上看桂素伟老师面向对象的讲解视频,有一点小疑问,到现在解决了,我这人挺笨的,赶紧记录下来免得睡一觉又忘记了
 
面向对象中,关于类的说法按照我个人理解如下:类就是。。。说不出来了。
 
反正类里面包括了字段,属性,方法。而且一旦字段定义为私有的,在类外面是无法直接访问的。比如桂素伟老师的年龄,嘿嘿。我以前粗略翻.net书的时候心想,这不是脱了裤子放屁么?定义了又不让访问,搞毛啊!
 
现在就来看看我领悟了点啥,废话不多说了,直接上代码。
 
下面的代码实际干了3件事:
1、类中定义了一个私有字段,用来表示本次考试及格成绩线是多少分,这个字段没法在program类中直接调用,实例化后也不行。
2、通过公有字段I提供给老师一个修改及格成绩线的机会,如果你只想扮演学生,屏蔽掉老师修改及格线部分就可以了。
3、提供了一个接口方法调用,帮助学生判断自己究竟考及格了没(难道真有人判断不了?)
 
        class Program
        {
                static void Main(string[] args)
                {
                        ABC abc = new ABC();

                        //老师修改及格线部分
                        Console.WriteLine("本次考试及格成绩线为:{0}分。请输入修改后的及格线:", abc.I.ToString());
                        abc.I = int.Parse(Console.ReadLine());
                        Console.WriteLine("修改成功,目前考试及格成绩线为:{0}分。", abc.I.ToString());

                        //学生查成绩部分
                        Console.WriteLine("本次考试及格成绩线为:{0}分。请输入你的成绩", abc.I.ToString());
                        int x = int.Parse(Console.ReadLine());
                        abc.chachengji(x);

                }
        }

        //定义成绩线及查询的类
        class ABC
        {
                int i=72;

                public int I
                {
                        get { return i; }
                        set { i = value; }
                }
                public void chachengji(int j)
                {
                        if (j >= i)
                        {
                                Console.WriteLine("你及格了!");
                        }
                        else
                        {
                                Console.WriteLine("不及格!");
                        };
                }
        }
 
抛开上面program类不说,我自己定义了一个类ABC,在这个类中的字段i虽然没有明确定义,但是默认是私有的,也就是说我们即使在program类中实例化了它,也没法访问,赋值。
 
我们先把它封装起来,提供一个对外访问的接口I,可以用来提取和设定i的值。
                public int I
                {
                        get { return i; }
                        set { i = value; }
                }
奇怪的是vs2008快速版居然不支持鼠标右键封装字段,专业版的右键菜单就有这个选项。。。
 
提供一个方法,用于判断学生传入的成绩究竟及格不及格
                public void chachengji(int j)
                {
                        if (j >= i)
                        {
                                Console.WriteLine("你及格了!");
                        }
                        else
                        {
                                Console.WriteLine("不及格!");
                        };
                }
 
之后将ABC在program类中实例化一下,就可以直接通过接口I来获得i的值(使用了 abc.I.ToString()),需要给i赋值的时候直接用abc.I=123;就可以了,大家嘲笑我吧,我从晚上8点开始看视频也没想明白这个问题,直到12点才搞清楚原来这么简单!!!直接赋值就可以了,我一晚上都在和abc.I.?搏斗
 
赋值之后i的值就变化了,是圆是扁随你捏,想设置成0分及格也是可以的
 
在整个程序中,虽然没有直接访问到私有变量,但是通过类的接口,可以修改也可以访问。同时这个类的功能在其他需要同样功能程序中可以快速调用,只需要知道接口就行了,不用考虑代码,比C的函数简易的多。
 
不得不承认,光说不练假把式,书上看来看去搞不清楚的东西,自己上手写点代码,一下就分析清楚了。
 
然后。。。睡觉。
 
 
 

本文出自 “边学习边实践” 博客,请务必保留此出处http://catmao.blog.51cto.com/1130511/252924

分享至
更多
一键收藏,随时查看,分享好友!
0人
了这篇文章
类别:c#技术圈()┆阅读()┆评论() ┆ 推送到技术圈返回首页

文章评论

 
2010-01-05 11:47:46
呵呵 挺逗的
刚开始学吧

2010-01-05 11:47:54
态度不错

2010-01-05 22:28:28
是啊,绝对新鲜出炉的菜鸟一只

 

发表评论            

【技术门诊】专家解析:软考重点难点及应试技巧
昵  称:
登录  快速注册
验证码:

请点击后输入验证码博客过2级,无需填写验证码

内  容: