实际上按照顺序不应该写这章,不过我我晚上看桂素伟老师面向对象的讲解视频,有一点小疑问,到现在解决了,我这人挺笨的,赶紧记录下来免得睡一觉又忘记了。
 
面向对象中,关于类的说法按照我个人理解如下:类就是。。。说不出来了。
 
反正类里面包括了字段,属性,方法。而且一旦字段定义为私有的,在类外面是无法直接访问的。比如桂素伟老师的年龄,嘿嘿。我以前粗略翻.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的函数简易的多。
 
不得不承认,光说不练假把式,书上看来看去搞不清楚的东西,自己上手写点代码,一下就分析清楚了。
 
然后。。。睡觉。