zoukankan      html  css  js  c++  java
  • 深入类的方法

    1.构造函数

      我们知道要使用类的属性和方法来完成程序功能,首要的任务是类进行实例化,通过SE engineer = new SE();创建SE对象,这种创建类实例的方法被称为构造函数

      1.构造函数

        类的构造函数是类中的一种特殊方法,它具有以下特点:

          1.方法名与类型相同

          2.没有返回值类型

          3.主要完成对象的初始化工作

    一.C#关键字扩充解释:

      1. new :

        1)开辟空间

        2)调用构造

        3)实例化对象

      2. this:

        当前类的实例,用来区分入参和成员变量

      3.  void  

        void修饰的方法表示返回值类型为空,并不代表没有返回值

    二.构造方法:

      1.构造函数

        特点:

          方法名与类名相同

          没有返回值类型

          主要完成对象的初始化工作

        注:不能将构造函数定义为void

          根据普遍的经验,我们在进行开发时,一般不在构造函数中进行类的初始化以外的事情,不要尝试显示地调用构造函数

      2.无参构造

        语法:   

    访问修饰符 类名()
    {
              //方法体          
    }        

        代码示例:

      

     public Book() { }

      3.带参构造函数

        语法:

        

    访问修饰符 类名(参数列表)
    {
              //方法体          
    } 

          参数列表一般用来给类的属性赋值

        优点:

          灵活性更好

          通过参数来动态控制对象的特征

        示例代码:

    复制代码
    public Book(int price, string author, string name)
            {
                //当前类的实例 ,用来 区分入参  和成员变量。
                this.price = price;
                this.author = author;
                this.name = name;
                
            }
    复制代码

      4.隐私构造函数

        在没有手动编写构造时,系统会给我们自动生成一个无参构造

        为什么系统要自动生成无参构造?

                是为了给将来给高级框架,高级框架在底层可以通过无参构造给我们的类创建对象。

    三.方法重载

      1.构造函数重载

      

    复制代码
     public class Player
        {
            //构造函数也可以构成重载
            public Player() 
            {
    
            }
    
            public Player(int age) 
            {
    
            }
    }
    复制代码

      2.方法重载

        特点:

          方法名相同

          方法参数类型不同或者参数个数不同

          在同一个类中

        需要注意,方法名及参数列表相同的方法,仅是返回值类型不同,不能称为方法重载

        

    复制代码
     public void Say() { }
    
            public string Say(int age)
            { 
                return "1"; 
            }
    
    
    
    
    
    
     public void Eat(int age,string name) 
            {
    
            }
    
            public void Eat(string name, int age)
            {
    
            }
    复制代码

      4.模仿Console系统类的WriteLine方法的可变参数数量传入

        

    复制代码
     public class MagicClass
        {
           //param 参数  params 参数集合   可变参数 
           public void Say(params object[] arg) 
           {
    
           }
        }
    复制代码

        :方法重载不仅能避免命名的麻烦,还能使调用者不必判断方法名就可直接调用

    四.对象间的交互

      1.概述:

        在面向对象的世界里,一切皆为对象

        对象与对象相互独立,互不干涉,但在一定的外力的作用下,对象开始共同工作

      

        每个类都有自己的特性和功能,我们把它们封装为属性和方法

        对象之间通过属性和方法进行交互

        可以认为方法的参数及方法的返回值都是对象相互传递的消息

      2.实例

        

    复制代码
        //遥控器
        public class Contol
        {
           
            public void Open(Tv tv)
            {
                tv.Open();
            }
            public void Close(Tv tv) 
            {
                tv.Close();
            }
            public void ChangeChannel(Tv tv,string channelName)
            {
                tv.ChangeChannel(channelName);
            }
        }
    
    
    
    
        /// <summary>
        /// 电视机
        /// </summary>
        public class Tv
        {
            //维护一个状态
            bool state = false;//关闭
            public void Open() 
            {
                if (state==false)//关闭的
                {
                    state = true;//状态切换到开 机状态
                    Console.WriteLine("电视机打开啦!!!!!~~~~~");
                }   
            }
            public void Close()
            {
                if (state == true)//开着的
                {
                    state = false;//状态切换到关 机状态
                    Console.WriteLine("电视机关闭啦!!!!!~~~~~");
                }
            }
    
            public void ChangeChannel(string channelName)
            {
                if (state==true)
                {
                    Console.WriteLine("您已经成功切换到"+channelName);
                }
            }
    
        }
    
    
    
    
            static void Main(string[] args)
            {
                //01.买一个电视机
                Tv tv = new Tv();
    
    
                //02.买一个遥控器
                Contol control = new Contol();
    
                //03.进行操作
                control.Open(tv);
                control.ChangeChannel(tv, "凤凰卫视");
                control.Close(tv);
    
    
            }
    复制代码

       经验:

         一旦程序报错"未将对象引用设置到对象的实例",我们就可以认定某个对象没有实例化。此时可以通过错误代码找到是哪个对象没有实例化,进行相应修改即可

            

  • 相关阅读:
    【Java】REST风格
    KMP(烤馍片)算法
    Lca求法 (树链剖分 与 倍增)
    hash学习笔记
    星际网络(数学)
    P3537 [POI2012]SZA-Cloakroom (背包)
    乘车路线 (二维最短路)
    渔民的烦恼 (二分)
    Jmeter 常用函数(18)- 详解 __isDefined
    Jmeter 常用函数(17)- 详解 __substring
  • 原文地址:https://www.cnblogs.com/fl72/p/8194573.html
Copyright © 2011-2022 走看看