1、对象的生成(出生)
Person aperson=new Person("小张",25)
构造过程:分配存储空间—初始化附加成员—调用构造函数
2.对象的旅程(在一定的约定与规则下,通过方法进行彼此的交互操作从而达到改变本身状态的目的)
对象类型:值类型(线程的堆栈)和引用类型(托管堆)。装箱:值类型—引用类型 拆箱:引用类型—值类型
对象属性:字段、属性。方法操作这些
对象的交互方式:设计模式
对象的生存环境:CLR
3.继承(目的:提高软件复用)
public:开放性最大,都可以访问
protected:纵向关心约定,其对象有访问父类的权限(父类和子类)
internal:同一程序集
protected internal:同一程序集,父类和子类
private:开放性最小,仅限于包含类型
4.多态(接口和抽象类)
(1)接口(以人的不同身份的不同职责为例子)
interface IPerson
{
string Name{get;set;}
int Age{get;set;}
void DoWork();
}
class PersonAtHome:IPerson {//dosomething }
class PersonAtSchool:IPerson { }
class PersonOnBus:IPerson { }
实例:
IPerson aPerson =new PersonAtHome(); aPerson.DoWork();
IPerson bPerson =new PersonOnBus(); aPerson.DoWork();
(2)抽象类
5.消亡(由GC控制)
6.内存分配
CLR管理内存区域
- 线程的堆栈(分配值类型实例):操作系统管理(不受GC),当值类型所在方法结束时,存储单元自动释放,执行效率高,存储有限。
- GC堆(引用类型):分配小对象 ,垃圾回收器会对GC堆进行压缩
- LOH堆(引用类型):分配大对象,不压缩
引用类型的实例分配在托管堆上,托管堆根据存储信息的不同划分为多个区域,其中GC堆和加载堆最重要。
引用类型创建、内存分配和初始化过程