zoukankan      html  css  js  c++  java
  • 2019-07-30 C#基础知识学习

    继承和多态

    接口与抽象类的区别:1、在接口中仅能定义成员,但是不能有具体的实现;抽象类除了抽象成员以外,其他成员有具体的实现。2、在接口中不能声明字段,并且不能声明任何私有成员,成员不能包含任何修饰符;在抽象中能声明任何成员,并能使用任何修饰符来修饰。3、接口中能实用类或者结构体来继承,但抽象类仅能使用类继承。4、在使用类来实现借口时,必须隐式或者显式地实现接口中的所有成员,否则需要将实现类定义为抽象类,并将接口中未实现的成员以抽象的方式实现;在使用类来继承抽象类时允许实现全部或部分成员,但仅实现其中的部分成员,其实现类必须也定义为抽象类。5、一个接口允许继承多个接口,一个类只能有一个父类。

    实现多态的两种方式: a.使用父类作为方法形参实现多态 b.使用父类作为方法返回值实现多态

    sealed关键词的用法:

    当一个类的方法被标识为virtual,则表示该方法为虚方法,虚方法可以后代所重写(后代包括子类、以及子类的子类)

    sealed关键字可以有两种用途:

    1、可以修饰在带有override的方法上,用来阻止其子类进一步重写该方法。

    2、可以修饰到类上,用来阻止类被继承

     1     class Test11_0
     2     {
     3         public  virtual string Fun()
     4         {
     5             return "这是类Test11_0";
     6         }
     7  
     8     }
     9  
    10     class Test11_1 : Test11_0
    11     {
    12         public override string Fun()
    13         {
    14             return "这是类Test11_1";
    15         }
    16     }
    17     class Test11_2 : Test11_1
    18     {
    19         public override string Fun()
    20         {
    21             return "这是类Test11_2";
    22         }
    23     }
    24  
    25     class Test11_3 : Test11_2
    26     {
    27         public override string Fun()
    28         {
    29             return "这是类Test11_3";
    30         }
    31     }
    32     class Test12_0
    33     {
    34         public virtual string Fun()
    35         {
    36             return "这是类Test12_0";
    37         } 
    38     }
    39     class Test12_1:Test12_0
    40     {
    41         public sealed override string Fun()
    42         {
    43             return "这是类Test12_1";
    44         }
    45  
    46     }
    47  
    48     class Test12_2 : Test12_1
    49     {
    50         //这个类就不能再重写fun方法了
    51     }
    52  
    53    sealed class Test13//该类不能被继承
    54     {
    55  
    56  
    57     }
    View Code

    虚方法跟抽象方法的区别:总结:抽象方法是只有方法名称,没有方法体(也就是没有方法具体实现),子类必须重写父类抽象方法;虚函数是该方法有方法体,但是子类可以覆盖,也可不覆盖。(1)虚方法有方法体,抽象方法没有方法体。抽象方法是一种强制派生类覆盖的方法,否则派生类将不能被实例化;(2)抽象方法只能在抽象类中声明,虚方法不是;(3)派生类必须重写抽象类中的抽象方法,虚方法则不必要。

    集合和泛类

    集合与数组的区别:1、数组声明了元素的类型,集合不声明;2、数组是静态的,有固定大小,创建了就无法改变容量,而集合是动态扩展容量,可以根据需要改变大小;3、数组存放类型只能是一种,集合可以不是一种;4、数组易于存放与查找。

    HashTable跟SortedList的区别:2者都是表示键/值对的集合,hashtable是没有排序的,所以新增元素会比较快,而SortedList 存储的键值对,是按key进行排序了的,因为要排序,所以新增元素时,要先查找元素的位置再插入,相对慢些,但是在查找时比较快

          

  • 相关阅读:
    快速开发一个自己的微信小程序
    ES6系列汇总
    数组、Set对象的互相转换
    CORS 跨域
    模板引擎之hogan.js
    Flex 布局语法教程
    ES6 Javascript 实用开发技巧
    几种知名开源富文本编辑器对比
    python 字符串的一些操作
    python os模块一些常用操作
  • 原文地址:https://www.cnblogs.com/wafs521/p/11270299.html
Copyright © 2011-2022 走看看