• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > C#中子类调用父类的实现方法

C#中子类调用父类的实现方法

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c#子类调用父类方法,子类调用父类方法,java子类调用父类方法,子类调用父类构造函数,子类调用父类变量等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文实例讲述了C#中实现子类调用父类的方法,分享给大家供大家参考之用。具体方法如下:

一、通过子类无参构造函数创建子类实例

创建父类Person和子类Student。

public class Person
{
    public Person()
    {
      Console.WriteLine("我是人");
    }
}
public class Student : Person
{
    public Student()
    {
      Console.WriteLine("我是学生");
    }
}

</div>

在客户端通过子类无参构造函数创建子类实例。

class Program
{
    static void Main(string[] args)
    {
      Student student = new Student();
      Console.ReadKey();
    }
}

</div>

输出结果:

我是人
我是学生

</div>

可见:通过调用子类无参构造函数创建子类实例,会默认调用父类无参构造函数。

如果把父类的无参构造函数去掉,会怎样呢?
--结果会报"Person不包含0个参数的构造函数"错。

二、通过子类有参构造函数创建子类实例

再同时为子类和父类添加有参构造函数。

public class Person
{
    public Person()
    {
      Console.WriteLine("我是人");
    }
    public Person(string name)
    {
      Console.WriteLine("我是人,我的名字叫{0}", name);
    }
}
public class Student : Person
{
    public Student()
    {
      Console.WriteLine("我是学生");
    }
    public Student(string name)
    {
      Console.WriteLine("我是学生,我的名字叫{0}", name);
    }
}

</div>

在客户端通过子类有参构造函数创建子类实例。

Student student = new Student("小明");
Console.ReadKey();

</div>

输出结果:

我是人
我是学生,我的名字叫小明

</div>

可见:通过调用子类有参构造函数,同样默认会调用父类无参构造函数。

三、在子类中明确指出调用哪个父类构造函数

以上,默认调用了父类的无参构造函数,但如何调用父类的有参构造函数呢?
--在子类中使用base

在子类Student中的有参构造函数中使用base,明确调用父类有参构造函数。

public class Student : Person
{
    public Student()
    {
      Console.WriteLine("我是学生");
    }
    public Student(string name)
      : base(name)
    {
      Console.WriteLine("我是学生,我的名字叫{0}", name);
    }
}

</div>

客户端

Student student = new Student("小明");
Console.ReadKey();

</div>

输出结果:

我是人,我的名字叫小明
我是学生,我的名字叫小明

</div>

四、通过子类设置父类的公共属性

在父类Person中增加一个Name公共属性,并在父类的构造函数中对Name属性赋值。

public class Person
{
    public string Name { get; set; }
    public Person()
    {
      Console.WriteLine("我是人");
    }
    public Person(string name)
    {
      this.Name = name;
      Console.WriteLine("我是人,我的名字叫{0}", name);
    }
}

</div>

在客户端:

Student student = new Student("小明");
Console.WriteLine("子类获取父类的Name属性值为{0}", student.Name);
Console.ReadKey();  

</div>

输出结果:

我是人,我的名字叫小明
我是学生,我的名字叫小明 
子类获取父类的Name属性值为小明 

</div>

以上代码的执行路径是:

→调用子类有参构造函数,并把该参数传值给父类有参构造函数
→调用父类有参构造函数,并给父类公共属性Name赋值
→子类实例调用父类的公共属性

其实,以上的做法在分层架构设计中已经得到了很好的使用。在分层架构中,通常会为所有的Repository创建一个基类,在基类中设计一个代表当前Repository的属性,并在基类的构造函数中为该属性赋值;最终,在创建子类Repository实例时,在为基类的、代表当前Repository的公共属性赋值。

在子类中,当父类通过base拿到子类的参数时,还可以对该参数做一些处理,比如代表父类的base把从子类拿到的参数转换成大写。

public class Student : Person
{
    public Student()
    {
      Console.WriteLine("我是学生");
    }
    public Student(string name)
      : base(ConvertToUpper(name))
    {
      Console.WriteLine("我是学生,我的名字叫{0}", name);
    }
    private static string ConvertToUpper(string name)
    {
      return name.ToUpper();
    }
}

</div>

输出结果:

我是人,我的名字叫DARREN
我是学生,我的名字叫darren
子类获取父类的Name属性值为DARREN

</div>

总结:

①.通过子类无参构造函数创建子类实例,会默认调用父类的无参构造函数
②.通过子类有参构造函数创建子类实例,也会默认调用父类的无参构造函数
③.在子类构造函数中通过base关键字指明父类构造函数,当通过子类构造函数创建实例,会调用指明的、父类的构造函数
④.父类的公共属性可以通过子类来赋值,子类也可以获取到父类的公共属性

相信通过本文上述实例的分析,可以加深大家对C#类的初始化与继承的理解。希望本文所述对大家进一步的学习C#程序设计有所帮助。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C#中子类调用父类的实现方法
  • 不能在子类或外部类发布C#事件代码分析
  • C# 批处理调用方法

相关文章

  • 2017-05-28OpenXml读写Excel实例代码
  • 2017-05-28C#函数式编程中的部分应用详解
  • 2017-05-28深入解析C#设计模式中对桥接模式的具体运用
  • 2017-05-28C#获取字符串后几位数的方法
  • 2017-05-28C#实现的24点游戏实例详解
  • 2017-05-28C# WinForm国际化实现的简单方法
  • 2017-05-28快速解决owin返回json字符串多带了双引号"多了重string转义字符串
  • 2017-05-28C#基于OLEDB获取Excel文件表结构信息的方法
  • 2017-05-28WPF实现时钟特效
  • 2017-05-28C#日期时间格式化小结

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C#使用DllImport调用非托管的代码的方法
    • c#索引器详解示例
    • C#设计模式之观察者模式实例讲解
    • C# 计算标准偏差相当于Excel中的STDEV函数实例
    • C#由当前日期计算相应的周一和周日的实例代码
    • c#删除代码中的单行注释行示例
    • .NET连接MongoDB数据库实例教程
    • 使用C#实现RTP数据包传输 参照RFC3550
    • C#的WebBrowser的操作与注意事项介绍
    • c#模拟js escape方法的简单实例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有