1. 有关类的多态性

C#中,类的多态性是通过在子类中重载基类的虚方法(virtual标识)或函数成员来实现。

在C#中,继承、虚方法和重写方法组合在一起才能实现多态性。

2. 显式接口成员的使用

显式接口成员属于接口的成员,而不是类的成员,因此,不能使用类对象直接访问,而只能通过接口对象来访问。

如:

interface IwgInterface1
{
  int Add();
} interface IwgInterface2
{
  int Add();
} class MyClass: IwgInterface1,IwgInterface2
{
  int IwgInterface1.Add() // 显式接口的实现d
  {
    int x=;
    int y=;
    return x+y;
  }   int IwgInterface2.Add()
  {
    int x=;
    int y=;
    int z=;
    return x+y+z;
  }
} class Program
{
  static void Main(string[] args)
  {
    MyClass myClass = new MyClass();
    IwgInterface1 my_itf1 = myClass; // 使用接口继承类的对象实例化接口
    IwgInterface2 my_itf2 = myClass;     Console.WriteLine(my_itf1.Add()); //
    Console.WriteLine(my_itf2.Add()); //
  }
}

3. 抽象方法与抽象类

当从抽象类派生一个非抽象类时,需要再非抽象类中重写抽象方法,以提供具体的实现。重写抽象方法时,使用override关键字。

抽象类的示例如下:

public abstract class wgClass

{

   public abstract void method1(); //抽象方法

}

public class Child: wgClass

{

  public override void method1()

  {

    Console.WriteLine("0...0");

  }

}

4. 抽象类与接口

抽象类和接口都包含可以由派生类继承的成员,他们都不能直接实例化,但可以声明它们的变量。如果这样做,就可以使用多态性把继承这两种类型的对象指定给它们的变量。接着,通过这些变量来使用这些类型的成员,但不能直接访问派生类的其它成员。

两者的区别:

抽象类的派生类只能继承一个基类, 但可以继承任意多个接口。

抽象类中可以定义成员的实现,但接口中不可以。

抽象类中可以包含字段、构造函数、析构函数、静态成员或常量等,接口不可以。

抽象类中的成员可以是私有的(只要它们不是抽象的),受保护的,内部的或者受保护的内部的成员(受保护的内部的成员只能在应用程序类本身或派生类中访问),但接口中的成员必须是公开的。

抽象类主要用于对昂系列的基类,共享某些主要特性。如共同的目的和结构。接口则主要用于类,这些类在基础水平上有所不同,但仍可以完成某些相同的任务。

5. 密封类与密封方法

密封类可以用来限制扩展性,如果弥生了某个类,则其它类不能从该类继承;如果是成员,则派生类不能重写该成员的实现。密封可以防止对库的类型和成员进行自定义。

满足以下条件,即可密封一个类:

类是静态类

类包含带有安全敏感的继承的受保护的成员。

类继承多个虚成员,并且密封每个成员的开发和测试开销明显大于密封整个类。

类是一个要求使用反射进行快速搜索的属性。密封属性可以提高反射在检索属性时的性能。

密封方法,例

public class Class1

{

  public virtual void Method()

  {

    Console.WriteLine("0...0"); //基类中的虚方法

  }

}

public sealed class MyClass: Class1

{

  public sealed override void Method()

  {

    base.Method();

    Console.WriteLine("密封类中重写后的方法");

  }

}

C# 类与接口的几个问题的总结(待续)的更多相关文章

  1. 为什么类和接口不能使用private和protected?接口的方法不能使用private、protected、default

    对于java程序员来说,java的访问权限修饰词public.protected.default.private的区别和使用肯定都不是问题,这里也不再啰嗦了,反正度娘一搜就一大把.最近在整理java ...

  2. C#与Java对比学习:类型判断、类与接口继承、代码规范与编码习惯、常量定义

    类型判断符号: C#:object a;  if(a is int) { }  用 is 符号判断 Java:object a; if(a instanceof Integer) { } 用 inst ...

  3. Effective java笔记(三),类与接口

    类与接口是Java语言的核心,设计出更加有用.健壮和灵活的类与接口很重要. 13.使类和成员的可访问性最小化 设计良好的模块会隐藏起所有的实现细节,仅使用API与其他模块进行通信.这个概念称为信息隐藏 ...

  4. java类,接口浅谈

    一般类,抽象类,接口的使用场景: 类;共同的特征和行为的抽取和封装 接口:标准,规范(功能的扩展)         需要对某个类进行功能的扩展,就让某个类实现这个接口,抽取出来称为接口   内部类: ...

  5. C#类和接口、虚方法和抽象方法及值类型和引用类型的区别

    1.C#类和接口的区别接口是负责功能的定义,项目中通过接口来规范类,操作类以及抽象类的概念!而类是负责功能的具体实现!在类中也有抽象类的定义,抽象类与接口的区别在于:抽象类是一个不完全的类,类里面有抽 ...

  6. PHP面向对象学习五 类中接口的应用

    类中接口的应用 接口:一种成员属性全部为抽象的特殊抽象类,在程序中同为规范的作用   抽象类:1.类中至少有一个抽象方法.2.方法前需要加abstract 接口: 1.类中全部为抽象方法,抽象方法前不 ...

  7. C#类、接口、虚方法和抽象方法0322

    虚拟方法和抽象方法有什么区别与联系: 1.抽象方法只有声明没有实现代码,需要在子类中实现:虚拟方法有声明和实现代码,并且可以在子类中重写,也可以不重写使用父类的默认实现. 2.抽象类不能被实例化(不可 ...

  8. Java知多少(107)几个重要的java数据库访问类和接口

    编写访问数据库的Java程序还需要几个重要的类和接口. DriverManager类 DriverManager类处理驱动程序的加载和建立新数据库连接.DriverManager是java.sql包中 ...

  9. Java高效编程之三【类和接口】

    本部分包含的一些指导原则,可以帮助哦我们更好滴利用这些语言元素,以便让设计出来的类更加有用.健壮和灵活. 十二.使类和成员的访问能力最小化 三个关键词访问修饰符:private(私有的=类级别的).未 ...

  10. Android开发中,那些让您觉得相见恨晚的方法、类或接口

    Android开发中,那些让你觉得相见恨晚的方法.类或接口本篇文章内容提取自知乎Android开发中,有哪些让你觉得相见恨晚的方法.类或接口?,其实有一部是JAVA的,但是在android开发中也算常 ...

随机推荐

  1. SPOJ MULTQ3 7299 Multiples of 3 (区间更新)

    题目连接:http://www.spoj.com/problems/MULTQ3/ #include <iostream> #include <stdio.h> #includ ...

  2. UVA 10246 Asterix and Obelix

    题意:每个城市举办庆祝有一定的花费,A在路径上会选择庆祝花费最大的城市 让你求,A回家所花的路费和庆祝费最少,也就是说并不是最短路径就是结果, 还有可能就是路费比最短路径的多,但是庆祝费就比它的少,总 ...

  3. hadoop聚群的安装

    第一部分,安装单机hadoop 1,安装ssh sudo apt-get install ssh 注意:如果执行不了这句,那就先执行:sudo apt-get update 2,安装rsync sud ...

  4. java基础知识回顾之---java String final类普通方法的应用之“子串在整串中出现的次数”

    /* * 2 一个子串在整串中出现的次数. * "loveerlovetyloveuiloveoplove" * 思路: * 1,要找的子串是否存在,如果存在获取其出现的位置.这个 ...

  5. 解决maven-dependency-plugin (goals "copy-dependencies", "unpack") is not supported by m2e.错误

    POM文件报错maven-dependency-plugin (goals "copy-dependencies", "unpack") is not supp ...

  6. Linux Versus Windows, Ubuntu/Mint V XP/Vista/7

    原文:http://petermoulding.com/linux_versus_windows_ubuntu_mint_v_xp_vista_7 Linux Versus Windows, Ubun ...

  7. Highcharts中初始化最大值与最小值的柱状图

    <!doctype html> <html lang="en"> <head> <script type="text/javas ...

  8. 欧拉工程第70题:Totient permutation

    题目链接 和上面几题差不多的 Euler's Totient function, φ(n) [sometimes called the phi function]:小于等于n的数并且和n是互质的数的个 ...

  9. 欧拉工程第61题:Cyclical figurate numbers

    ---恢复内容开始--- 题目链接 从三角数开始,循环到八角数,再到三角数,求这6个数的和 这个比较复杂,代码在网上找的 Java: package project61; import java.ut ...

  10. VC程序查错之内存访问异常

    作者:langouster 先来看下面这张图,相信很多程序员都见过类似. ---------------------------test1.exe - 应用程序错误------------------ ...