面向对象概论
面向对象理论很早就被提出了,但它真正地渗透到软件开发的各个领域,并且在软件开发实践中大规模使用,却要追寻到上世纪九十年代。到目前为止,面向对象技术已是软件开发的主流,全面取代了结构化编程技术曾经具有的地位。
面向对象技术与结构化编程技术有着不同的风格,但同时也有着密切的联系。从具体编程角度来看,面向对象技术与结构化编程技术很难截然分开,两者的根本差别在于思维方式。
面向对象的核心概念
1.封装
封装的类=数据+对此数据进行的操作(即算法)
在面向对象理论中,封装这个概念拥有更宽广的含义,小到一个简单的数据结构,大到一个完整的软件子系统。
具备封装的意识,是掌握面向对象分析与设计技巧的关键。
2.抽象
在使用面向对象的方法设计一个软件系统时,首先要区分出现实世界中的事物所属的类型,分析它们拥有哪些性质与功能,再将它们抽象为在计算机虚拟世界中才有意义的实体--类。
3.继承
在计算机世界中,以面向对象的观点不仅将上述事物抽象为类,而且将事物之间的派生关系也一并模拟出来,这种关系称为继承。
1.父类的相关成员,会自动派生到子类去。public protected
2.子类可以扩展父类的相关成员。
3.子类可以替代父类来使用,但父类不能替代子类来使用。
4.多态
用比较抽象事物来取代具体事物的表达方法,在面向对象软件中用“多态”这一特性来模拟
一、类的基本概念
(一)类的基本了解。
类:自己定义的一种复杂的类型。
类一般包括两大部分:字段-成员变量(名词或形容词),方法-成员函数(动词)
类的关键词:class
(二).类的定义:
class 类名
{
成员变量的定义;
...
成员函数的定义;
...
}
在类的成员(成员变量,成员函数)前面经常会加访问修饰符(public private protected)
(三).类的使用:
Dog d = new Dog(); //实例化
d.Name = "旺财";
d.Owner = "张三"; d.Run();
d - 对象的引用。 new Dog() - 真正的狗的对象。
(四)附加: C#中的变量的类型:
1、值类型: int float double char bool struct datetime
2、引用类型: string 数组 自定义的类。 模型图:堆空间与堆空间。
1.用模型图解释: A a1 = new A(); A a2 = new A(); Console.WriteLine(a1== a2); //结果为什么是false?
2.用模型解释:上面狗的例子,为什么最后d.Run()会显示成李家的狗?
3.用模型解释:int a = 100; int b= 100; Console.WriteLine(a == b);结果为什么是true?
类的封装:不要随便把成员变量设成public,一般需要设成private或protected,通成员方法或成员属性来实现对成员变量的合法访问。
二、类的成员——属性
属性:对成员变量进行访问的端口。
(一)属性的定义: public 类型 属性名 { get { } set { 关键词value.代表是要赋的值。 } }
(二)属性的使用: 直接通过属性名进行使用。 Console.WriteLine(r.Height); - 调用属性的get部门 r.Height = 180; -调用属性的set部分。
三、类的方法——成员函数——方法重载 方法的名子相同,参数不同(类型不同,个数不同)——形成了方法的重载。 重载方法与返回类型无关。 好处: 1.减少方法名的定义,不用记太多的方法名了。 2.减少代码重复,更大限度的重用,代码结构更合理。
多个重载方法被调用的时候,首先找方法名,然后再根据参数找对应的重载方法。