对象的旅行
Person person = new Person("小王",27)
在内存中分配一定的存储空间,初始化其附加成员,调用构造函数初始化。
对象像人一样,也是有类型的,常见的有值类型和引用类型。值类型位于线程的堆栈,而引用类型位于托管堆。例如农名工可以进城打工,工人可以回乡,在面向对象中称为装箱与拆箱。
person.ChangeName("Bob")
作为人我们都是有属性的,例如名字、年龄、籍贯。对象的字段、属性就是我们的标签,而方法就是操作标签的行为。所以对象的诞生与消亡,在某种程度上就是外界通过方法与对象交互,从而改变对象状态信息的过程。同时,人一出生,就必须通过语言交流,形成种种的关系,不同的对象发生着不同的交互,对象的交互方式被记录在“设计模式中."
对象的生存环境是CLR,而人的生存环境是社会。CLR提供了对象赖以生存的托管环境,制定一系列的规则,称为语法,类如类型、继承、多态、垃圾回收。而社会同样制定法律,规范,道德,帮助我们制约个体,维护社会。
人类社会就是系统架构,也是分层的。上层建筑代表政治和思想,通过社会契约和法律规范为经济基础服务。在对象世界中,这被称为接口。面向接口的编程就是以接口方式来抽象变化,从而形成体系。
由此课件,对象的旅行就是在一定的规则与约束下,通过方法进行彼此的交互操作,从而达到改变本身状态的目的。
插曲:
继承:继承的目的就是为了提高软件的复用,例如儿子继承父亲的遗产,但并不是继承所有,例如父亲的隐私的那一部分。
1 interface IPerson 2 { 3 string Name {get;set;} 4 Int Age {get;set;} 5 void DoWork(){ 6 7 } 8 } 9 10 class PersonAtHome:IPersom 11 { 12 13 } 14 class PersonAtSchool:IPersom 15 { 16 17 } 18 class PersonAtBus:IPersom 19 { 20 21 }
多态:例如在学校是学生,在家里是儿子,在车上是乘客。
IPerson aperson = new PersonAtHome(); aperson.DoWork(); IPerson bperson = new PersonOnBus(); bPerson.DoWork();
Iperson代表了不同角色的人,在不同的情况下实现不同的操作,把决定权交给系统自行处理。