打赏

深入类的方法。

--构造函数。

示例--

static void Main(string[] args){
     SE se=new SE();
       se.Name="天天向上";
       se.Age="15";
       se.ID="110";
Console.WriteLine(se.SayHi());
}

示列中可以看到调用构造函数创建SE对象并为其赋值,如不赋值的话,系统会给类的各个参数赋予默认值,

构造函数特点:

    1.方法名和类名相同

    2.没有返回值类型

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

--无参构造函数

      访问修饰赋  类名(){

            //方法体

        }

示例--

public  class SE
    {
       public string Id { get; set; }

       public string Name { get; set; }

       public string Age { get; set; }

       public string Money { get; set; }


       public SE()
       {
           this.Id = "1";
           this.Name = "王维娜";
           this.Age ="15";
           this.Money = "5000";
       }      
       public void mian() {
           Console.WriteLine("学号{0} \t  名字{1} \t 年龄{2}  \t金钱{3}",Id,Name,Age,Money);
       }

     static void Main(string[] args)
        {
          SE se = new SE();
              se.mian();
            Console.ReadLine();
        }

--带参构造函数

    访问修饰赋    类名 (参数列表){

      //方法体

      }

示例--

public  class SE
    {
       public string Id { get; set; }

       public string Name { get; set; }

       public string Age { get; set; }

       public string Money { get; set; }


       public SE(string id, string Name, string Age, string money)
       {
           this.Id = id;
           this.Name = Name;
           this.Age =Age;
           this.Money = money;
       }      
       public void mian() {
           Console.WriteLine("学号{0} \t  名字{1} \t 年龄{2}  \t金钱{3}",Id,Name,Age,Money);
       }

  static void Main(string[] args)
        {
         SE se = new SE("11","wang","1","500000000");
             se.mian();
            Console.ReadLine();
        }

--方法重载

构造函数的重载

示例--

Public Class Player{
   public void play(乐器){
       //弹奏乐器
   }
    public void play(歌曲){
       //演唱歌曲
   }
     public void play(剧本){
        //根据剧本表演
    }
}

从上面的示列可已总结出重载的特点:

  1.方法名相同

  2.方法的参数不同和方法的个数不同

  3.在同一个类中

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

示列--

SE类

public  class SE
    {
       public string Id { get; set; }

       public string Name { get; set; }

       public string Age { get; set; }

       public string Money { get; set; }


       public SE(string id, string Name, string Age )
       {
           this.Id = id;
           this.Name = Name;
           this.Age =Age;
           this.Money = "10000";
       }     
       public void mian() {
           Console.WriteLine("学号{0} \t  名字{1} \t 年龄{2}  ",Id,Name,Age);
       }
    }

PM类

public  class PM
    {
        public string Id { get; set; }

        public string Name { get; set; }

        public string Age { get; set; }

        public string Money { get; set; }

       
       public PM(string id, string Name, string Age )
       {
           this.Id = id;
           this.Name = Name;
           this.Age =Age;
           this.Money = "100000";
       }
       public void mian()
       {
           Console.WriteLine("学号{0} \t  名字{1} \t 年龄{2}", Id, Name, Age);
       }

方法重载--

public class CommpSalary
    {
        public  void Pay(SE se) {
            string money = se.Money;
            Console.WriteLine("员工工资" + money);
        }

        public  void Pay(PM pm)
        {
            string money = pm.Money;
            Console.WriteLine("经理工资"+money);
        }
    }

测试——————————

 class Program
    {
        static void Main(string[] args)
        {
            CommpSalary sa = new CommpSalary();
            PM pm = new PM("111", "经理", "20");
            pm.mian();
            sa.Pay(pm);
            SE se = new SE("11","员工","1");           
            se.mian();
            sa.Pay(se);
            Console.ReadLine();
        }
    }

 

--对象交互

每个类都有自己的特性和功能,我们把它们封装为属性和方法对象之间通过属性和方法进行交互,可以认为方法的参数及方法的返回值都是对象相互传递的信息

示列

一个TV类

 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);
            }
        }

一个遥控器

 //遥控器
    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);
        }
    }

测试————————————————

 class Program
    {
        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);


        }

 

总结:

  1.带参构造函数提供初始化对象时的多种选择,我们可以有效的选择初始化相应的信息。

  2.如果没用给类添加显式构造函数,那么系统在初始化对象时会调用隐式构造函数,并且系统会根据属性的数据类型给其赋予默认值。

  3.构造函数通常于类名相同,构造函数不声明返回值,一般情况下,构造函数总是public类型

  4.方法重载是指方法名相同,而参数类型和参数个数不同,在同一个类中,构造函数和普通方法都可以重载

  5.同一个类中,方法名相同,参数列表相同,但返回值类型不同的方法不能构成方法重载

  6.在面向对象的程序中,对象通过公开方法和属性完成与其他对象的交互,可以认为方法的参数及方法的返回值都是对象间相互传递的消息。

posted @ 2018-01-07 11:56  雾里看云°  阅读(155)  评论(0编辑  收藏  举报