====上一章《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  返回值类型  方法名(参数列表)  //静态方法中只能访问静态的方法和属性

           {                        //在调用时只能通过类名.方法名的方式实现

              方法体;

           }

====下一章《关于方法

posted on 2015-12-06 23:45  海绵全是洞  阅读(2649)  评论(0编辑  收藏  举报