zoukankan      html  css  js  c++  java
  • 泛型学习(三)

    5 泛型与继承

    开放类型:含有类型参数的类型,“开放”即为 数据类型不确定。
              (包括:类型参数本身,包含开放类型的构造类型,元素类型为开放类型的数组类型)
    封闭类型:开放类型以外的类型 (即没有泛型类型的值类型 引用类型)

    * 基本原则: 开放类型不能从封闭类型中继承。

    5.1 普通类型与派生泛型类

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ConsoleApp
    {
        class GenericInheritSample
        {
            public static void Main()
            {
                CzIndexedAssemble<Contact> asm = new CzIndexedAssemble<Contact>(5);
                asm[0] = new Contact("赵丽");
                asm[1] = new Business("Mike");
                asm[2] = new Business("李明");
                asm[3] = new Business("Tom");
                asm[4] = new Family("王小强");
                asm.Sort();
    
                for (int i = 0; i < 5; i++)
                    asm[i].Output();
                Console .WriteLine ("---------------------------")
                asm.Output ();
                Console .ReadLine ();
            }
        }
    
        //泛型类:索引集合CzIndexedAssemble
        public class CzIndexedAssemble<T> : czrelation<int, T> where T : IComparable
        {
            public T this[int index]
            {
                get { return Right[index]; }
                set { Right[index] = value; }
            }
    
            public CzIndexedAssemble(int iLength) : base(iLength)
            {
                for (int i = 0; i < Length; i++)
                    Left[i] = i;
            }
    
            public void Output()
            {
                T t;
                for (int i = 0; i < Length; i++)
                {
                    t = Right[Left[i]];
                    if (t != null)
                    {
                        IOutput io = t as IOutput;
                        if (io != null)
                            io.Output();
                        else
                            Console.WriteLine(t);
                    }
                }
            }
    
            public void Sort()
            {
                int tmp;
                for (int i = Length; i > 0; i--)
                {
                    for (int j = 0; j < i - 1; j++)
                    {
                        if (Right[Left[j]].CompareTo(Right[Left[j + 1]]) > 0)
                        {
                            tmp = Left[j + 1];
                            Left[j + 1] = Left[j];
                            Left[j] = tmp;
                        }
                    }
                }
            }
        }
    }
    
  • 相关阅读:
    python 获取当前时间
    PHP基础
    python 编码
    系统分区表 MBR GPT
    python mysql like查询的写法
    JSP JavaBean
    jsp MVC
    python 正则例子
    Java版A星算法
    linux 部署subversion独立服务器
  • 原文地址:https://www.cnblogs.com/streetpasser/p/2810701.html
Copyright © 2011-2022 走看看