面向对象的实现
1 C#中类可以有多个父类、可以实现多个接口吗
2 简述C#中重写、重载和隐藏的概念
3 为什么在构造方法中调用虚方法会导致问题
4 在C#中如何声明一个类不能被继承

面向对象的实现

1 C#中类可以有多个父类、可以实现多个接口吗

C#中最多只能有一个父类,但可以实现多个接口。

2 简述C#中重写、重载和隐藏的概念

重写是指用Override关键字重新实现基类中的虚方法,在运行的过程中,无论通过那个类型的引用,真正类型的方法将被调用。

隐藏是指用new关键字重新实现基类中的方法,在运行的过程中通过引用的类型判断应该调用哪个类型的方法。

重载是指多个方法共享同一个名字并且拥有相同的返回值,但是却可以拥有不同的参数列表。

3 为什么在构造方法中调用虚方法会导致问题

构造方法中调用虚方法将导致运行时的错误。这是因为构造方法被调用时,子类的构造方法还未被调用,但是根据实际对象的类型,基类调用的虚方法是定义在子类中的方法,这就意味着调用了一个未完成构造的类型对象的方法,不可预计的错误将可能发生。

构造方法示例如下:

    class Constructor
{
static void Main(string[] args)
{
//构造了一个底层类型
C c = new C();
Console.Read();
}
}
public class Ref
{
public Ref(string s)
{
Console.WriteLine(s);
}
}
public class Base
{
public Ref basestring = new Ref("Base初始化表达式");
public Base()
{
Console.WriteLine("Base构造方法");
}
}
public class A:Base
{
public Ref astring = new Ref("A初始化表达式");
public A():base()
{
Console.WriteLine("A构造方法");
}
}
public class B : A
{
public Ref bstring = new Ref("B初始化表达式");
public B(): base()
{
Console.WriteLine("B构造方法");
}
}
public class C : B
{
public Ref cstring = new Ref("C初始化表达式");
public C(): base()
{
Console.WriteLine("C构造方法");
}
}

输出结果:

C初始化表达式
B初始化表达式
A初始化表达式
Base初始化表达式
Base构造方法
A构造方法
B构造方法
C构造方法

4 在C#中如何声明一个类不能被继承

C#通过关键字sealed可以申明一个类型不可被继承,设计中应该为所有不被作为基类的类型添加sealed关键字,以避免各种来自继承的易产生的错误。

String类就是sealed的

转载请注明出处:

作者:JesseLZJ
出处:http://jesselzj.cnblogs.com

最新文章

  1. Web 前端之HTML和CSS
  2. IE浏览器中Image对象onload失效的解决办法
  3. include/asm/dma.h
  4. vi/vim 的使用
  5. WebService---Android中访问WebService接口的方法
  6. 茗洋Easy UI 1.3.2 部分问题解决系列专题[Combo模糊匹配中文问题 修复]
  7. 汇文Libsys图书管理系统全版本权限绕过+getshell
  8. cocos2d-x触摸分发器原理
  9. MVC知识总结(前序)
  10. 今天给大家分享一下Android中的资源与国际化的问题
  11. Unity3d项目合作 场景的合并和还原
  12. 1.SpringBoo之Helloword 快速搭建一个web项目
  13. Python中function(函数)和methon(方法)的区别
  14. Archlinux无线联网教程
  15. Python入门代码练习
  16. Java 学习笔记 (五) Java Compile\Build\Make的区别
  17. mysql 原理 ~ innodb恢复机制
  18. .NET CORE MYSQL 微信小程序 HTTPS 随笔
  19. 用em包图片记
  20. 小众Python库介绍

热门文章

  1. SpringMVC传统风格控制器和基于注解的控制器
  2. 华为交换机S5700 vty 0 4
  3. 简单获取各大视频网站的flash地址
  4. JVM常用参数设置
  5. clipboard使用总结
  6. Android MVP模式简单易懂的介绍方式 (二)
  7. UNITY 内存问题资料收集
  8. 第2章地址Address(WCF全面解析3)
  9. quartz的配置文件
  10. Excel VBA入门(六)过程和函数