C# 类和对象

一、基础定义(必须记住)

面向过程:以事件为中心,关注的是完成这件事的具体步骤

面向对象:以事物为中心,关注的是完成这件事所参与的对象的部分功能

面对对象的两大核心: 类 和 对象


类:具有相同特征和行为的一类事物的抽象,相当于数据类型,可以用来定义变量

对象:类的实例,类的具体体现,占用内存空间


区分类和对象:如果所有人想到的都是同一件事物,那就是对象,否则就是类


面对对象的三大特性: 封装 继承 多态


OO:面对对象

OOP:面对对象编程


二、类

1.类的定义:具有相同特征和行为的一类事物,相当于数据类型,可以用来定义变量

2.定义格式:

class 类名 

{

// 特征(字段)

// 行为(方法)

}


3.字段

字段的添加格式:  访问修饰符  数据类型  字段名 ;

字段默认是私有的,如果想在外界访问到,就必须添加public

注意:字段在添加的过程中,可以赋初值


4.方法

4.1 方法的概念:方法是具有特定功能的代码段

4.2 方法的作用:将复杂的逻辑进行拆分,减少重复的代码

4.3 方法的格式:  访问修饰符  返回值 方法名 (参数列表){ 方法体; }

4.4 访问修饰符:控制方法的可见度, public  private  protected  internal 

4.5 返回值类型:返回值就是方法执行结束的结果,使用 returen 关键字,将方法执行的结果返回给主调人

     如果方法没有返回值,则returen 可以省略

      return 后面的值的类型要与方法的返回值类型匹配

      return 语句执行后,程序会跳转回主调方法,所以return 下面的语句不会被执行到

4.6 方法名:方法的唯一标识,见名知意,首字母需要大写,命名要用驼峰命名法

4.7 参数列表:实现功能需要主调人提供的资源

4.8 参数:数据类型  变量名

4.8 方法体:具体功能的实现过程

4.10 方法的类型:有参数有返回值,有参数无返回值,无参数有返回值,无参数无返回值

4.11 方法的分类:系统方法   和  自定义方法

4.12 例子:

class Person      // 设定一个 人 的类
  {
    // 特征(字段)
    public string name ;
    public string gender;
    public string age;

    // 行为(方法)
    public void HeiHei(){
        Console.WriteLine(“你追到,如果你追到我,我就让你嘿嘿嘿");
        }
    // 嘿嘿嘿
    public void Eat( food ){
        Console.WriteLine(“” + food)
        }
    // 吃饭
    public int Run(  ){
        Random ran = new Random ();

        int a = ran,Next(1,10);
        return a;   // 将变量a中存储的值返回给主调人
        或者写成     
        return ran.Next(10);
        }
       
    }                              

三、对象

1.对象的创建格式:

类名  对象名  =  new  构造方法;

例如:Person per = new Person ( ) ; 

2.字段的访问 —— 使用 “点语法”

3.方法的调用

调用方法使用——点语法 

如果方法不需要参数,方法名后的小括号不能省略


四、形参、实参、作用域

形参:形式参数,是在方法定义时创建的参数,是不确定的值

实参:实际参数,是在方法调用时的参考,是唯一确定的值

实参向形参进行值的传递,是一个拷贝的过程

作用域:指的是变量的有效范围


五、方法的嵌套调用、数组作为方法的参数方法允许嵌套调用,但是不允许嵌套定义

class Compute
    {
        // 求两个整数的和
        public int Sum(int a, int b){
            return a + b;
        }
    }

                Compute cc = new Compute ();
                int sum = cc. Sum (3,5 );
                Console. WriteLine ( “两个整数之和为:” + sum ) ;
                int num1 = 4, int num2 = 5;
                Console. WriteLine ( cc.Sum ( num1, num2 ) ) ;
                Console. WriteLine ( “num1 =” + num1 )

    class Max01
    {

// 求两个整数的最大值
        public int MaxOf02 ( int a, int b ){
      // 方法一
        if ( a > b ) {
            return a ;
        }  else {
            return b ;
        }
      // 方法二
        if (a > b){    
            return a ;
        }   return b;
       // 方法三
        return a > b ? a : b ;              ( 如果a大于b,则输出a,反之输出b )
    
// 求三个整数的最大值
        public int MaxOf03 ( int a ,int b,int c){
            // 普通方法
              if ( a > b  && a > c ){
                    return a;
                }  else if ( b > a && b > c ){
                    return b;
                }  else {
                    return c;
                }
                       
             // 嵌套方法
             return MaxOf02 ( MaxOf02 ( a,b ),c );
             }

  // 求四个数的最大值
        public int MaxOf04(int a, int b, int c, int d){
        return MaxOf02(MaxOf02(MaxOf02(a,b),c),d);
                }
       
// 求五个数的最大值  - - 排序
             // 数据作为方法的参数时,由实参向形参传递的是数组的地址,所以在方法内部和外部操作的是同一个容器中的内容 
        public void MaxOf05 ( int[  ] arr ){
            for ( int i =0; i < arr.Length - 1; i ++ ){
                for ( int j = 0; i < arr.Length - 1 - i ; i++ ) {
                     if ( arr[ j ] > arr[ j + 1 ] ){
                                int temp = arr[ j ] ;
                                arr [ j ] = arr [ j + 1 ];
                                arr [ j + 1 ]  = temp;
                        }
                    }
                }
            }
    }    
        
                //  两个整数的最大值
                Max01 aa = new Max01( );
                int sum1 = aa. MaxOf02( 6,5 );
                Console. WriteLine ( “最大的是” + sum1 ) ;

                // 三个整数的最大值
                int sum2 = aa. MaxOf03 ( 5, 6, 1 );
                Console. WriteLine ( “最大的是” + sum2 ) ;
                
                // 四个整数的最大值
                int sum3 = aa. MaxOf04 ( 11, 22, 14, 20 );
                Console.WriteLine ( “最大的是” + sum3 );
                
                 // 求五个或五个以上整数的最大值
                 int[ ] arr = { 12,14,2, 5, 22 };
                 aa.MaxOf05 ( arr );
                 for ( int i = 0; i < arr. Length ; i ++ ){ 
                     Console.Write ( arr[ i ] + “ “ ) ;
                  }  
                  Console. WriteLine ( “最大值为:” + arr [ arr.Length - 1 ] ) ;

六、Get,Set 方法

字段设置为public 会违反封装特性, private 会违反继承特性

所以我们通常将字段的可见度设为 protected

当我们需要为字段赋值或者取值时,就需要为外界提供赋值或者取值的接口(方法)

// 添加 Set和Get 方法
        // Set方法的规范:不需要返回值,参数的类型与字段相同,方法名Set + 字段名
        protected double height;
        public void SetHeight(double _height){
            height = _height;
        }  

        // Get方法的规范:返回值类型和字段类型一直,无参数,方法名Get + 字段名
        public double GetHeight(){
            return height;
        }
        public void SayHi(){
            Console.WriteLine ("我叫{0},性别{1},年龄{2},身高{3}",name,gender,age,height);
        }


                           // 输出Get.
                          Person p1 = new Person ();
            Console.WriteLine (p1.GetHeight());










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值