深刻类的点子

一.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);


        }

   经验:

     一旦程序报错”未将指标援引设置到指标的实例”,我们就能够认定有些对象未有实例化。此时得以经过错误代码找到是哪个指标未有实例化,进行相应修改就能够

 

    

相关文章