• 泛型


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

    <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();
            }
    
        }
  • 相关阅读:
    YARN的设计
    在(MRv1)中JobTracker工作方式
    经典 MapReduce框架(MRv1)
    进程与线程的简单解释
    Java序列化的机制和原理
    ibatis源码学习4_参数和结果的映射原理
    ibatis源码学习3_源码包结构
    ibatis源码学习2_初始化和配置文件解析
    ibatis源码学习1_整体设计和核心流程
    spring中的设计模式
  • 原文地址:https://www.cnblogs.com/cicily/p/10936625.html
Copyright © 2020-2023  润新知