zoukankan      html  css  js  c++  java
  • 静态类

    只包含 静态方法和属性,用static标识

    静态类不能创建实例,不能被继承

    主要用于 基础类库 和 静态类扩展方法

     静态扩展方法:

    扩展方法所属类是static类,方法是static方法,方法第一参是this+类名。

     class Program
        {
            static void Main(string[] args)
            {
               
                Pet[] pets = new Pet[] { new Dog("DD"), new Cat("CC") };
               
                for (int i = 0; i < pets.Length; i++)
                {
                    pets[i].Speak();
                }
    
                
                Dog D = new Dog("DD1");
                Dog.ShowNum();
                D.Lost();//
                Dog.ShowNum();
                Dog d0 = (Dog)pets[0];
                d0.Lost();
                Dog.ShowNum();
    
                D.FeedDog();
    
            }
    
        }
        abstract public class Pet
        {
            protected string Name;
            public Pet(string name)
            {
                Name = name;
            }
            public void PrintName()
            {
                Console.WriteLine("Print" + Name);
            }
    
            abstract public void Speak();
        }
        public class Dog : Pet
        {
            static int Num;
            static Dog()
            {
                Num = 0;
            }
            public Dog(string name) : base(name)/
            {
                ++Num;
            }
            new public void PrintName()
            {
                Console.WriteLine("子打印" + base.Name);
            }
            //override public void Speak()
            sealed override public void Speak()
            {
                Console.WriteLine("子说" + Name);
            }
            static public void ShowNum()
            {
                Console.WriteLine("Dog's number = " + Num);
            }
            public void Lost()
            {
                --Num;
                Console.WriteLine(Name + " is Lost!");
            }
        }
        static class PetGuide//额外创建的静态类
        {
            static public void FeedDog(this Dog dog)//静态类里的静态方法,第一参为this+类名,这是静态扩展方法
                                                    //Dog类因为某种原因,不可修改,不可override等,但又需要扩展时使用的方法。
                                                    //这样Dog就被额外扩展了这个功能,Dog类本身不包含这个方法,但使用起来就像Dog里直接有这个方法一样
            {
                Console.WriteLine("Play a vedio about how to feed a dog");
            }
        }
      

    我的理解就是这样什的:

     class Program
        {
            static void Main(string[] args)
            {
               
                传人 虚竹 = new 传人();
                虚竹.乾坤大挪移(); //就这样莫名其妙可以直接使出来这招了,好像自己原本就有这种功力一样
    
            }
    
        }
     
        public void 传人()
        {//在大牛面前算是几乎什么也不会
        }
        static class 活死人要传授的一系列功法//虚竹自己不想得此功法,但是活死人需要传功法
        {
            static public void 乾坤大挪移(this 传人 虚竹)//将这个功法传给一个叫虚竹的传人,此时第一参就记录这个信息
            {
    
            }
        }
  • 相关阅读:
    UVA 125 Numbering Paths
    UVA 515 King
    UVA 558 Wormholes
    UVA 10801 Lift Hopping
    UVA 10896 Sending Email
    SGU 488 Dales and Hills
    HDU 3397 Sequence operation
    数据库管理工具navicat的使用
    javascript封装animate动画
    关于webpack没有全局安装下的启动命令
  • 原文地址:https://www.cnblogs.com/cicily/p/10930080.html
Copyright © 2011-2022 走看看