C#方法(2)例子

1,静态方法和非静态方法的区别:

例子1:

(1)静态方法

namespace 静态方法
{
    
    class Program
    {
        public static int Add(int x, int y)             //声明一个静态方法
        {
            return x + y;
        }
        static void Main(string[] args)
        {
            Console.WriteLine("学敏,咱们的计算结果是:  " + Program.Add(2, 4));            //使用类名调用静态方法
        }
    }
}

运行结果:

 

(2)非静态方法

 

namespace 非静态方法
{
    class Program
    {
        public int Add(int x, int y)              //声明一个非静态方法
        {
            return x + y;

        }
        static void Main(string[] args)
        {
            Program xuemin = new Program();                                //实例化类Program
            Console.WriteLine("学敏,计算结果为 " + xuemin.Add(2, 4));        //使用实例化对象xuemin调用定义的非静态方法

        }
    }
}


运行结果:

 

 

2,方法重载和方法重写的不同:

例子2:

(1)方法重载

namespace 方法重载
{
    class Program
    {
        public static int Add(int x, int y)      //定义静态方法Add,返回值为int类型,两个int类型参数
        {
            return x + y;

        }
        public double Add(int x, double  y)       //方法Add,两个参数,一个double类型,一个int类型
        {
            return x + y;

        }
        public int Add(int x, int y, int z)      //方法Add,三个参数,均为int类型
        {
            return x + y + z;

        }
        static void Main(string[] args)
        {
            Program xuemin = new Program();
            int x=3;
            int y1=4;
            double y2 = 3.2;
            int z=5;

            Console.WriteLine("学敏,以下是计算结果,请注意查收!!"+"\n");

            //根据传入的参数类型和个数的不同调用不同的Add重载方法
            Console .WriteLine ("x"+"+"+"y1"+"="+Program .Add (x ,y1 ));
            Console .WriteLine ("x"+"+"+"y2"+"="+xuemin .Add (x ,y2 ));
            Console .WriteLine ("x"+"+"+"y1"+"+"+"z"+"="+xuemin .Add (x ,y1,z  ));

        }
    }
}

运行结果:

 

(2)方法重写

 

见例子3就有方法重写

 

3,通过例子3能掌握:

1,抽象类不能直接实例化,抽象类如何实例化?—先实例化派生类,然后使用派生类对象实例化抽象类

2,抽象类和抽象类的使用:

 

例子3:声明一个抽象类myClass,该抽象类中声明了两个属性和一个方法,其中为两个属性提供了具体实现,方法为抽象方法。然后声明一个派生类DriveClass,继承自myClass,在DriveClass派生类中重写myClass中的抽象方法,并提供具体实现。最后在主程序类Program的Main方法中实例化DriveClass派生类的一个对象,使用该对象实例化抽象类,并使用抽象类对象访问抽象类中的属性和派生类中重写的方法。

namespace 抽象类和抽象方法的使用
{
    abstract class myClass                  //声明一个抽象类myClass
    {
        string id;
        string name;

        public string ID                         //编号属性ID
        {
            get
            { return id; }

            set
            { id = value; }

        }

        public string Name                      //姓名属性Name
        {
            get
            { return name; }

            set
            { name = value; }
        }

        public abstract void ShowInfo();         //声明一个抽象方法ShowInfo

    }

    class DriveClass : myClass                                     //声明一个派生类DriveClass,派生自类myClass
    {
        public override void ShowInfo()                //派生类DriveClass重写基类myClass中的抽象方法ShowInfo
        {
            Console.WriteLine(ID + " " + Name);

        }
    }
    
    class Program
    {
        static void Main(string[] args)
        {
            DriveClass driveclass = new DriveClass();         //实例化派生类DriveClass
            myClass xuemin = driveclass;                                  //使用派生类对象driveclass来实例化抽象类

            xuemin.ID = "廊坊师范学院001号";
            xuemin.Name = "韩学敏";
            xuemin.ShowInfo();                                                            //抽象类对象调用派生类中的方法
            Console.WriteLine("\n");

        }
    }
}

运行结果:

 

4,密封类和密封方法的使用

例子4:

namespace 密封类和密封方法
{
    class myClass1                            //声明类myClass1
    {
        public virtual void ShowInfo()        //虚方法ShowInfo
        { 
        }

    }
    
   sealed class myClass2:myClass1            //声明密封类myClass2,并且继承自myClass1
   {
       string id=" ";
       string name=" ";

       public string ID                         //编号属性ID
       {
          get 
          {  return id ;}

           set 
           {id =value ;}
 
       }

       public string Name                      //姓名属性Name
       {
           get 
           { return name ;}

           set 
           {name =value ;}
       }
      public sealed override void  ShowInfo()       //密封并重写基类myClass1中的ShowInfo方法
      {   
         Console.WriteLine(ID + " " + Name);
      }
   }

    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("学敏,调用ShowInfo方法后的结果: "+"\n");
           
            myClass2 xuemin = new myClass2();                //实例化密封类myClass2
            xuemin .ID ="廊坊师范学院001号";
            xuemin.Name ="韩学敏";
            xuemin.ShowInfo();                               //调用密封类myClass2中的密封方法

            myClass2 xueyang = new myClass2();
            xueyang.ID = "廊坊师范学院002号";
            xueyang.Name = "韩学杨";
            xueyang.ShowInfo();
            
        }
    }
}

运行结果:

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值