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();
            }
    
        }
  • 相关阅读:
    Single Number II
    Pascal's Triangle
    Remove Duplicates from Sorted Array
    Populating Next Right Pointers in Each Node
    Minimum Depth of Binary Tree
    Unique Paths
    Sort Colors
    Swap Nodes in Pairs
    Merge Two Sorted Lists
    Climbing Stairs
  • 原文地址:https://www.cnblogs.com/cicily/p/10936625.html
Copyright © 2011-2022 走看看