C# 方法

方法

  

   1. 方法的概念,意义,定义,调用,返回值

 

1. 关于:return 

      1) return : 结束当前方法的执行

      2) 方法的返回值

 

          如果方法的返回值定义时为void,那么在方法体的最后

          一行,可以省略不写return 语句,一般,不会写。

 

          如果方法的返回不是void,而是其它的类型,如:

          int, float , int[] .....,这时应该在方法体的

          最后一行加: return 语句,return 后面跟的内容

          一定得是对应类型。可以是一个普通的值,也可以是

          能够计算出对应类型值的表达式。

          注:返回值类型常用:

          int  bool  float  double

          数组 ,类类型

         

          public  void   Print()

          {

                 return ; //return默认省略

          }

 

          public   int[]   Insert()

          {

               return   int[] ;

          }

 

2.数组的作为方法值

 

   -----------------------------------------------------

 

 

   方法重载机制:

 

      

  考虑:完成以下功能:实现多个数据相加

 

  int ,  int   ------  Add( int a, int b )

 

  int ,float   ------  JiaFa( int a, float b)

 

  int ,int ,int------  Sum (int a, int b ,int c)

 

  double,double------  JF( double a, double b )

  .....

 

    使用重载机制后,改为:

 

 

    AddUtils.cs

 

    一组方法,这组方法完成的是多个数据相加的操作

    

    Add ( int a, int b )

 

    Add ( int a, float  b )

 

    Add ( int a, int b , int c )

 

 

 

   Add ( double a ,double b )

   

 

    Test.cs

       Add( 10 , 20 ); //Add( int a, int b )

       Add( 1.0f,2.0f) ;

 

 

 

 

 

 

总结:

 

0. Overload 或 OverLoad  或 OverLoading
1. 方法重载是一种使用机制,在编码中解决

     完成相同的功能,只是在完成功能时,需要的参数

     个数或类型不一样,这时,使用方法重载了。

 

2.能够构成方法重载的条件:

  

     1)必须是一个类的一组方法(方法至少2个)

 

     2)这组方法的特点:

        方法名完成相同,如:都叫 Add(....)

        但是方法的形式参数个数或参数类型不相同。

        这时,当调用时,编译器会根据给定的实际数据

        进行自动匹配,找到最合适的方法去执行。

        匹配时,会自动向上匹配。

        如:Add(int a,    float b)  第一个方法

            Add(double a, float b)  第二个方法

           

            Add( 1.1f , 1.1f )

            会自动 匹配第二个方法

 

     3)方法重载与返回值没有任何关系。

 

练习:

  写个工具类,用于完成多个数字相加的操作。

  要求:工具类中定义方法时使用重载机制完成。

 

  然后定义一个测试类,添加主方法,

  调用工具类中的加法方法,测试不同的数字相加。

  体会方法重载机制的具体使用和意义。

 

 

 

 

 ---------------------------------------------------------

 

     OOP  面向对象编程   面向过程编程

    

  1. 面向对象编程与面向过程编程区别

面向对象编程 :属于一种高级编程思想

语言   C# , Java , JS ......

         面向对象是计算机解决问题的一种思想,

         强调的是对象。有了具体对象后,然后再根据

         相应需求来设计完成功能。

 

         “大象放到冰箱”,

          考虑对象有对象,再按照步骤 。

         

      程序来源于生活,服务于生活。     

          

面向过程编程:属于一种偏底层编程思想,解决的是

         一些低层或者 比较小的问题。面向过程 强调“过程”

         或“步骤”,先做什么,再做 什么,最后做什么...

语言   C语言

 

    二者之间的关系:先从面向对象的角度考虑问题,

    准备相应的对象,有了对象之后,再去按面向过程解决问题。

 

  --------------------------------------------------------

  

  1. 生活中的类和对象

         类:模板,不存在一种东西。

 

         对象:真真正正存在的实物。       

 

  1. 程序中的 类 和 对象

 

     类:

        是组成程序最基本单元。

        class 来创建一个类

        程序中的类也是一种模板,

        是不存在的东西。

        将来可以根据类这个模板,

        来构建很多具体的真正存在的实物(对象)

        这个模板就规范了这个类应该包含的特征和行为

       

       

     对象:
        1)是根据类这个模板产生的具体实物。

           当然,符合这个模板的实物可以有多个

           所以,我们程序中的对象也可以创建多个.

 

        2)对象是真正存在的,

           如何让对象存在?new 关键字来创建对象

           即:使用new创建几次,就有几个对象

 

        3)这些对象都会具备模板中所定义的规范,
        4)对象被创建出来之后,是存在堆栈中。

       

  4. 如何创建类和对象?

 

1)创建类的基本语法:

 

        访问修饰符  class  类名

        {

 

        }

       注:类名一般是具体的名词,命名使用Pascal命名法。

           类定义时,应该使用一组大括号

           可以在class前面添加访问修饰符。

           public  private   protected  internal ....

      

2) 对象的创建?

       基本语法:

 

       类名    变量名 =   new  类名();

     

 

       如:定义一个角色类

       class   Role

       {

          

       }

       创建一个具体的角色对象,名字:role1

         //

         Role  role1   =  new   Role ( );

         Role  role2   =  new   Role ( );

 

   注:一般,类单独写在一个.cs文件中,

       如果要根据类产生对象时,一般会选择创建一个新的类

       在类中添加主方法,new关键字。

 

 

  练习:模拟大象放到冰箱这件事情。

 

1. 创建模板(类,大象类,冰箱类,测试类Main())

       

        1. 有对象( 大象,冰箱,人)

 

2. 按步骤(第一步,第二步,第三步....)

 

   3.类中的字段和方法

 

     为了更好的描述模板,通常需要在模板类中添加一些

     特定的成员内容。成员包括两部分:

     ---字段:特征,有什么

     ---方法:行为,能做什么

 

     注:字段和方法暂时使用 public 修饰。

 

     如:

     class   GirlFriend

     {

          //字段--特征,有什么,----全局变量

          public string  name ;   

          public string  sex  ;

         

          //方法--行为,能做什么

          public  void  Study()

          {

                Cosnole.WriteLine("......");

          }         

     

     }

 

   4. 如何访问类中的字段和方法

      当对象使用new关键字创建出来之后,每个

      对象都会具备类中所定义好的一份内容(字段和方法)

      而且每个字段都会有默认值。

      但是,若想为对象的字段重新赋值,就需要:

 

   1) 访问类中某些字段:

          对象名 . 字段  ;

       如: Console.WriteLine( e1.age  );//e1大象的年龄

 

   2) 为当前操作的对象的某些字段赋值

        对象名.字段名   =   具体的值

      如:为 e2 这头大象的身高赋值,身高为 160.

        e2 .height = 160.0f ;

 

 

   对象名.方法名();

 

 

  总结:

  1.方法的基本使用

  2.方法的重载

  3.类和对象

  4.如何创建类,如何对象

  5.如何访问类中的字段或方法

    如何设置值

 

  day08 作业     2018.01.11    周四

-------------------------------------------------------------

 

一、扩展题。(必做题)

    程序来源于生活,服务于生活。

    学习了C#中的面向对象,了解了如何创建类,如何创建对象,

    又明白了如何为对象的字段赋值和访问值后,

    请观察你身边的事物,或考虑你身边有没有符合类和对象场景的

    实际例子。请使用代码的形式描述出来。

    类型不限、内容不限。重点是体会类和对象的概念,深刻明白

    类中的内容,对象是如何具备的。

 

 

 

二.代码补充题和选择题。(必做题)

 

1. 下面是关于冒泡排序的代码(将数组中的元素升序 排列),

  中间缺少的部分代码是:

  int[] array = { 12, 34, 6, 2, 4, 7, 90 };

  for (int i = 0; i < array.Length - 1; i++)

  {

        ____________

        {

             if (array[j] > array[j + 1])

             {

                     int temp = array[j];

                     array[j] = array[j + 1];

                     array[j + 1] = temp;

              }

         }

  }

 

 2.在C#类中,可以通过编写(C D)实现方法重载。(多选题)

   A.具有不同返回类型的同名函数(错,能否构成方法重载,跟返回值没有任何关系)

   具有不同代码行数的同名函数(错,能否构成方法重载,跟方法中具体代码行数没有关系)

   具有不同参数个数的同名函数

   具有不同参数类型的同名函数

 

构成重载的条件:

(1)      多个方法名字相同

(2)      方法的参数个数或参数类型上不相同

(3)      能否构成重载,跟方法返回值没有任何关系

3.在C#中,类Test的代码如下所示,则选项 (A   ) 中的方法声明是

  对类Test.cs类中 Change() 方法的重载。

  class Test

  {

      public void change(int m)

     {

     }

  }

 

 

 A.

  public int Change(double m)

  {

 

      Console.WriteLine(“parameter is:” +m);

      return 0;

  }

(A.项中,方法名和给定的Change()方法的方法名相同,

不同的是,A.项中的Change()方法的参数类型和给定不一样,现在说明:方法名相同,参数类型不相同,可以构成重载)

 

 B.

  public int Change(int m)

  {

 

      Console.WriteLine(“one parameters”);

      return 0;

  }

(B项错误

方法的参数类型和给定的Change()一样,现在说明:方法名相同,参数类型相同,不可以构成重载)

 C.

  public void change (int m)

  {

 

     Console.WriteLine(“one parameters”);

  }

(C项错误

方法的参数类型和给定的Change()不一样是change(),现在说明:方法名不相同,参数类型相同,不可以构成重载)

 D.

  public void change(int m,int n)

  {

 

     Console.WriteLine(“two parameters”);

  }

(D项错误

方法的参数类型和给定的Change()不一样是change(),现在说明:方法名不相同,参数数量不相同(数量不同可以构成重载),不可以构成重载)

 

 

 三、编码题。

 

 1.考查:数组作为方法的参数(必做题)

   创建一个方法:int GetMinValue( int[,] numbers ){}

   该方法用于查找指定二维数组中的最大元素。

   要求:调用并打印结果。

   提示:二维数组中找出最大元素或最小元素,直接使用双重for

   循环,在循环体依次中做判断(和一维数组一样的)

 

 2.考查:类和对象基础(必做)

 

 创建一个Book类,用于描述书的基本信息。

 字段:编号-string, 书名--string,作者-string

       价格-float , 页数--int

 方法:读书(Read)

 

 创建一个测试类,BookTest.cs,

 在测试类中创建一本书,book1,

 并通过“对象名.字段名”为book1的字段赋值:

 

 010101,"Unity经典官方案例","Jack",59.9,450

 

 赋值之后,打印两个对象各个字段的值。打印格式为:

  书名=“”,作者=“”,价格=***

 

 3.考查:类和对象基础(选做)

    创建一个几何学中的“点”类,Point.cs

   “点”类中包含的成员:

    字段:x ,y 注:x和y是int类型的数字

    方法:求两点之间距离的方法:float  Distance( Point p )

   

   创建一个测试类,在测试类中添加主方法,主方法中:

     1)创建第一个点,名字为: p1,

        然后为这个点的x和y两个字段赋值,值分别为:10和3

     2)创建第二个点,名字为:p2,

        然后为这个点的x和y两个字段赋值,值分别为:20和2

     3)考虑:如何计算这两点之间的距离

posted @ 2019-09-10 19:50  Winward_King  阅读(369)  评论(0编辑  收藏  举报