zoukankan      html  css  js  c++  java
  • c#面向对象

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

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

                  方法体;

               }

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

  • 相关阅读:
    Maven学习总结
    excel 拷贝数据到 plsql 报 is not a valid date and time
    Spring使用Quartz定时调度Job无法Autowired注入Service的解决方案
    Python开发【第二十二篇】:Web框架之Django【进阶】
    Python开发【第二十一篇】:Web框架之Django【基础】
    Python之路【第二十篇】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy
    Python开发【第十九篇】:Python操作MySQL
    Python开发【第十八篇】:MySQL(二)
    Python开发【第十六篇】:AJAX全套
    Python开发【第十五篇】:Web框架之Tornado
  • 原文地址:https://www.cnblogs.com/pengyouqiang88/p/5024804.html
Copyright © 2011-2022 走看看