1、面向对象面向对象面向对象概念 OOP.面向对象不是取代面向过程的。.类、对象。“人”是类,“张三”是“人”这个类的对象。类是抽象的,对象是具体的。按钮就是类,某个按钮就是对象。对象可以叫做类的实例(Instance)。类就像int,对象就像10。字段Field(和某个对象相关的变量),字段就是类的状态。人这个类有姓名、年龄、身高等字段。类不占内存,对象才占内存。.方法Method,方法就是类能够执行的动作,比如问好、吃饭等。.类的继承,类之间可以有继承关系,比如“电脑”类可以从“电器”类继承,这样的好处是“电脑”类只需要定义自己特有的字段、方法就可以,也就是只要定义内存大小、CPU型号这些字段
2、或者弹出光驱等方法就可以。父类(Parent)、基类(Base,基业,祖宗十八代传下来的)。电脑类是电器类的子类(ChildClass)。重用。.面向对象的三个特性:封装、继承、多态。.没有面向对象的世界中的难题。 static void Main(string args) /* Person p = new Person();/创建一个Person对象,用p指向它。 p.Name = tom; p.Hight = 160; p.Age = 36; p.SayHello(); class Person public int Hight; public int Age; public strin
3、g Name; public void SayHello() Console.WriteLine(大家好,我是0,我的身高是1,我的年龄2,this.Name,this.Hight,this.Age);/this.我自己的* static void Main(string args) Person1 p1 = new Person1(); p1.Hight = 165; p1.Age = 20; /p1.Name = tom;/错误,Name被定义成private,不能在外部访问。 p1.GiveName(汤姆); /p1.OpenEyes();/错误,OpenEyes方法被定义成privat
4、e,不能在外部访问。 p1.SayHello(); class Person1 public int Hight; public int Age; private string Name; public void GiveName(string name) if (name = tom | name = 汤姆) this.Name = name; else return; public void SayHello() OpenEyes(); Console.WriteLine(大家好,我是0,我的身高是1,我的年龄是2, this.Name, this.Hight, this.Age);/th
5、is.我自己的* private void OpenEyes() Console.WriteLine(睁开眼睛!); static void Main(string args) person2 p2 = new person2(); p2.Age = 30; Console.WriteLine(年龄:0,p2.Age); p2.Age = -30; Console.WriteLine(年龄:0, p2.Age); person3 p3=new person3(); p3.Age=30; p3.Age=p3.Age+1; Console.WriteLine(p3.Age); person4 p4
6、 = new person4(); p4.Age = 30; Console.WriteLine(p4.Age); person5 p5 = new person5(); /p5.Age = 30;错误,属性只读。 p5.IncAge(); p5.IncAge(); Console.WriteLine(年龄:0,p5.Age); person6 p6 = new person6(); p6.Age = 30; p6.Name = 飞鸿; Console.WriteLine(我的号是:0,我的年龄:1,p6.Name,p6.Age); class person2 private int age;
7、 public int Age/Age中没有保存数据,数据都保存到age中了 set/赋值 if (value 200)/与public字段和属性的区别,可以设置非法值的判断 return; else this.age = value;/value代表用户赋值过来的值 get/取值 return this.age; class person3 public int Age set get return 3; class person4/最常见的错误的类,死循环 private int age; public int Age set this.Age = value; get return th
8、is.Age; class person5 private int age; public int Age/只读属性 get return age; public void IncAge() age+; class person6 /从.net 3.0以后,如果对输入没有限制,可以用以下方式简写属性。 public int Age set;/编译器自动帮我生成私有字段和set,get代码块。 get; public string Name set; get; 课上练习. 面向对象版聊天机器人. 机器人有不同的名字、维护自己的FullLevel,可以SayHello(我叫*),可以喂食(Eat(
9、int foodCount)),可以对它说话(Speak),对异常情况(错误的喂饭数字,喂的太多撑死了)进行处理,有两个机器人供选择,一开始通过1、2数字选择聊天机器人。using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 面向对象的聊天机器人1 class Program static void Main(string args) 机器人 r1 = new 机器人(); r1.Name = 小二; r1.Eat(5); 机器人 r2 = new 机器人(); r2
10、.Name = 小三; r2.Eat(8); Console.WriteLine(请选择机器人:1-小二,2-小三); string s = Console.ReadLine(); 机器人 r; if (s = 1) r = r1;/r指向“r1指向的对象” else r = r2; r.SayHello(); while (true) string str = Console.ReadLine(); r.Speek(str); class 机器人 public string Name get;set; private int FullLevel get; set; public void S
11、ayHello() Console.WriteLine(我叫:0,this.Name); public void Eat(int foodCount) if (FullLevel 100) return; FullLevel = FullLevel + foodCount; public void Speek(string str) if (FullLevel = 0 & age 3 & age 18 & age = 150) return 成年人; else if (age 0) throw new Exception(你来自反物质世界吧!);/throw 扔,catch 抓,出现异常的时候
12、我们已经new好一个exception对象扔(throw)出来,咱们抓(catch)住即可。 else throw new Exception(你见过老佛爷吧!); 常量与静态成员. const常量。常量名要大写。一定不会变化的值才能声明为常量。using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 常量 class Program public const int pi=3;/public const 不用new一个类就可以直接调用 static void Main(string args) /* int r = 10; int l = 2 * 3 * r; Console.WriteLine