跳过正文
  1. 博客/
  2. 随笔/
  3. 编程/

泛型继承的理解

1 分钟· ·
随笔 编程
作者
Allen
一个强大、轻量级的 Hugo 主题。
目录

泛型对于解决面对对象编程的算法设计可以提高其运算速度,但是对于引用类型来说还是没什么差别,因为引用类型只是指针的地址的调用,简单来说泛型还是挺好理解的,但是对于泛型、非泛型、继承和接口的融合就有些迷惑了。
#

比如说这种接口
#
		public interface IEnumeratot<T>:IDisposable,IEnumerator,ICompare<T>
  

这个泛型接口继承了两个非泛型接口,和一个泛型接口。
#


我一开始理解泛型就是一个个模型,只要我们把类型一个参数赋给他,他就能生成一个标准的类型,他缺少的只是一个参数而已,我们引用的时候感觉就像我们引用一个“全体方法”,把参数赋给类型后就可以一直调用类中的方法了,但是对于接口的继承如何理解?
#

对于泛型类的继承,继承的类必须实现泛型的参数或者保留泛型的参数,比如下面

  public class A<T>
  
{
  
    public T tt;
  
}
  
public class C<T> : A<T>
  
{
  
    public T tt;
  
}
  

或者是这样

  public class A<T>
  
{
  
    public T tt;
  
}
  
public class C : A<string>
  
{
  
    C cc;
  
}
  

对于泛型继承非泛型类,比如下面

	public class A 
  
    {
  
         A aa;
  
     }
  

  
     public class B<T>:A
  
	{
  
		B<T> bb;
  
	}
  

基类是非泛型,而继承的是泛型类,我感觉这种构造就是让泛型类多了一种包容性,比如下面的链表实现的代码,让基类是非泛型,而继承是泛型,就能让链表可以连起很多种类型的数据,而本身的类型安全没有丢失。

	public class Node
  
	{
  
			pretected Node next;
  
  			public Node(Node next){
  
				this.next=next;
  
				}
  
	}
  
    public class TypeNode<T>:Node
  
	{
  
		public T data ;
  
		public TypeNode(T data):this(data ,null){
  
			}
  
        public TypeNode(T data,Node next):base(next){
  
			this.data=data;
  
			}
  

  
		}
  

泛型的约束

相关文章

《我编程,我快乐:程序员职业规划之道读后感
3 分钟
随笔 人生
八月杂感
1 分钟
随笔 人生
<<机器学习实战>>心得.
2 分钟
AI 心得
Numpy的简析
3 分钟
后端 框架 Python
PIL (Pillow)
3 分钟
后端 框架 Python
Python 线程(threading) 进程(multiprocessing)
6 分钟
后端 框架 Python