zoukankan      html  css  js  c++  java
  • 泛型

    泛型类 某型类的模子,某型可根据需要变化

    <T> T代表某类型,T就是个占位子的,类似于数学方程中的一个X

    public class  Cage<T>//泛型类 T代 类的类型 可以代表Dog Cage/Cat Cage等等
        {
            T[] array;
            readonly int Size;
            int num;
            public Cage(int n)//构造函数
            {
                Size = n;
                num = 0;
                array = new T[Size];
            }
            public void PutIn(T pet)
            {
    
                if (num < Size)
                {
                    array[num++]=pet;
                }
                else
                {
                    Console.WriteLine("Cage is full !");
                }
            }
            public T TakeOut()
            {
                if (num > 0)
                {
                  return array[--num] ;
                }
                else
                {
                    Console.WriteLine("Cage is empty !");
                    return default(T);
                }
           
            }
    
        }
     abstract public class Pet
        {
            protected string Name;
            protected int Age;
            public Pet(string name)
            {
                Name = name;
                Age = 0;
            }
            public void PrintName()
            {
                Console.WriteLine("Print" + Name);
            }
            public static Pet operator ++(Pet pet)
            {
                ++pet.Age;
                return pet;
            }
            public void ShowAge()
            {
                Console.WriteLine(Name+ " Age = " + Age);
            }
          
            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("子print名字是 " + base.Name);
            }
           
            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!");
            }
    
            public static implicit operator Cat(Dog dog)
            {
                return new Cat(dog.Name);
            }
        }
     class Program
        {
            static void Main(string[] args)
            {
                
                var dogCage = new Cage<Dog>(1);//泛型的实例化
                dogCage.PutIn(new Dog("DD4"));
                dogCage.PutIn(new Dog("DD5"));
                Dog DD = dogCage.TakeOut();
                DD.PrintName();
                Dog DD_1 = dogCage.TakeOut();
            }
    
        }
  • 相关阅读:
    C++中Map的使用 (个人简单的对于String的使用)
    具体数学二项式至生成函数章-----致敬Kunth
    C++中String的使用
    C++中Set的使用
    费马小定理,欧拉函数
    数论---同余法则定理
    灵活利用单链表,顺带一提可持久化链表。
    第2章 数字之魅——数字中的技巧
    Mail.Ru Cup 2018 Round 1
    Lyft Level 5 Challenge 2018
  • 原文地址:https://www.cnblogs.com/cicily/p/10936625.html
Copyright © 2011-2022 走看看