====上一章《C#基础》
一、为什么需要面向对象:
在面向对象出现之前,结构化程序设计是程序设计的主流,被称为”面向过程“的程序设计。
面向过程的开发方法,通常会存在以下问题:
1、软件复用性差
2、软件可维护性差
3、软件灵活性差
面向对象编程思想中的对象,是一种具有状态(属性)和行为(方法)的数据结构,用于描述现实世界的某个事物,将现实世界的事物模型化。
二、对象与类的关系:
类:对事物的一种抽象定义;
对象:客观存在的具体事物。
2.1、创建类和对象:
声明类:class className //<类名>
{
//Fields<字段>
//Methods<方法>
//Properties<属性>
}
创建对象:className Object=new Constructor(参数列表);
类名 对象名 构造方法()
2.2、字段与属性:
1、字段:类的成员,用于描述一类事物的某个特征的变量。
【举例】:Employee类中具有很多的特征(如姓名、年龄等),在定义类时即可用两个字段分别存储员工的姓名和年龄。
class Employee //声明类
{
public String employeeName;//员工的姓名字段
public int emlioyeeAge;//员工的年龄字段
}
Employee employee=new Employee();//创建对象(实例化对象相当于实实在在存在的一个人,类只是抽象的定义一个人的类)
employee.employeeAge=20;//通过对象使用字段,给对象赋值年龄。
2、属性:对字段的封装,用于阻止非法数据的输入,从而保护内部数据的安全。
【封装】:隐藏内部实现、对外提供公共操作的方式。
对象就是封装了数据和操作这些数据的代码的逻辑实体。
在一个对象内部,某些代码和数据不能被外界访问,对象通过这种方式对内部数据提供不同级别的保护,用于防止程序中的隐藏部分由于意外而被改变或被错误操作。
【访问修饰符】:从上到下,私有程度逐渐降低
private:只能在本类中使用
protected:在本类中及其子类中可以使用
internal:同一命名空间(程序集)中的类可以使用
public:所有类均可使用
【举例】:Employee类中具有很多的特征(如姓名、年龄等),在定义类时即可用两个字段分别存储员工的姓名和年龄。
class Employee //声明类
{
private String employeeName;//员工的姓名字段
public String EmployeeName
{
get{return employeeName;}//只读属性
set{employeeName=value;}//只写属性
}
private int emlioyeeAge;//员工的年龄字段
public String EmployeeAge
{
get{return employeeAge;}//只读属性
set
{
if(value<=0||value>100)
{
employeeAge=18;
Console.WriteLine("年龄设置错误!");
}
else
{
employeeAge=value;
}
}
}
}
Employee employee=new Employee();//创建对象(实例化对象相当于实实在在存在的一个人,类只是抽象的定义一个人的类)
employee.employeeAge=20;//自动调用属性EmployeeAge中的set访问器
//自动调用属性EmployeeAge中的get访问器
Console.WriteLine("该员工的年龄是:{0}",employee.EmployeeAge);
2.3、方法:(实例方法)面向对象程序设计中,对象可以执行的操作被称为方法。
1、方法的定义和调用:
【语法】:访问修饰符 返回值类型 方法名(参数列表) //参数列表可以为空,但括号不能省略;存在多个参数时,需要使用逗号分隔。
{ //返回值类型可以是c#中的任意类型;也可以没有返回值,若没有返回值则必须使用Void.
方法体; //方法体中无论有多少行代码都必须使用括号将其括起来。
}
【调用】:
a、同一类中的方法直接通过方法名进行调用;
b、同一命名空间不同类中的方法调用方式如下:
⑴、创建对象;//类名 对象名=new 构造方法();
⑵、通过对象名.方法名进行调用。//对象名.方法名();
c、不同命名空间中的方法调用方式如下:
⑴、导入命名空间;//using 命名空间
⑵、创建对象;
⑶、通过对象名.方法名进行调用。
2、构造方法:类被实例化时首先执行的一种特殊方法,用于完成对象属性的初始化操作。(在创建对象的同时将属性初始化)
【注意】:一个类中若没有定义任何构造方法,则运行环境会提供一个无参的构造方法。
【分为】:无参的构造方法和有参的构造方法。
【语法】:访问类名(参数列表) //构造方法名与类名相同
{ //构造方法没有返回值
语句块;
}
【举例】:class Employee
{
public Employee(String employeeName,int employeeAge)//创建一个有参的构造方法
{
EmployeeName=employeeName;
EmployeeAge=employeeAge;
}
}
//创建对象
Employee employee=new Employee("Jack",20);
3、静态方法:(类方法)通过satic关键字修饰的方法
【语法】:访问修饰符 static 返回值类型 方法名(参数列表) //静态方法中只能访问静态的方法和属性
{ //在调用时只能通过类名.方法名的方式实现
方法体;
}
====下一章《关于方法》