面向对象
对象
定义:对象是人们要进行研究的任何事物,是对问题领域中事物的抽象
特性:
- 万物皆对象
- 每个对象都是唯一的
- 对象具有属性和行为
- 对象具有状态
- 对象都属于类、每个对象都是某个类的实例
主要任务:
定义对象模型中的各个类以及他们之间的关系
类和对象
- 类:就是能描述属性和行为的一种数据类型
- 类的定义:
[类访问修饰符] class 类名 [:基类名]
{
[成员访问修饰符] 类的成员
}
- 访问修饰符:用来限制类的作用范围
- public:公有类;可以被其他类访问
- private:私有类;只能在定义这个类
- protected:
- internal
- abstract
- Sealed
- 基类:表明所定义的类是一个派生类
- 类的成员:类的常量、字段、属性、方法、索引器、事件、构造函数、析构函数和内部类
public class Student{
private string name; --- 字段
public string Name{ ---- 属性
get{return name;} -----属性
set{name=value;} ----属性
} ----属性
public void SayHi(){ ---- 方法
Console.WriteLine("Hi"); ---- 方法
} ---- 方法
}
-
对象:是类的实例对象、是真是存在的
- 一个类可以有多个实例
- 一个实例只能属于一个类
比如:学生类
姓名、年龄、性别:都属于类的属性 学习、上课:都属于类的方法、要做什么
一般来说只有实例化之后才能使用类,使用 new关键字来调用构造函数
类名 对象名 = New 类名(实参);
Student stu =new Student();
stu.SayHi();
在类外,通过本类对象名,只能访问公有成员,即 对象名.公有成员名
- 类中的每一个成员都可以归类为两种方式:实例成员或者静态成员
- 实例成员
- 当创建了一个类的对象时,对象作为一个单独的实体存在,并拥有它自己的特性和行为集
- 实例成员定义在类内,没有static修饰符修饰
- 对于不同实例,实例成员拥有不同的值
- 静态成员
- 静态定义在类内,使用static修饰符修饰
- 在任何时刻,不管存在多少对象实例,只存在该成员的唯一一份副本
- 例如System.Math类、System.IO.Path,这些类都有一些静态成员,他们对输入进行操作,并且返回某个值
使用静态成员,避免了创建实例的开销
- 实例成员
字段和属性
字段
- 组成了一个类主要的数据部分他们是对象的状态是类的成员
- 不同的对象,数据状态不同,意味着它们各字段取值不同
- 命名 遵循 Camel 风格
字段类型
- 常量字段:
- 使用过程中常量的值不会变化
- 可以反复使用
- 命名必须全部大写、 多个字段用“_”隔开
- 只读字段
- 类似常量字段
- 在运行的时候初始化
属性
- 属性的字段类型必须和字段的类型一致
- 通过 get、set访问器访问
- get 用于获取值,具有只读属性、set用于赋值,具有只写属性
面向对象的核心:万物皆是类
面向对象特性:继承、封装、多态