C#中的类继承详解

目录
  • 前言
  • 类的继承
  • 注意事项
  • 寄语
  • 总结

前言

在日常的程序编码工作中,我们的最终目标是完成公司交给自己的开发任务,核心目标是写出好代码。

那么什么是好代码?

高内聚,低耦合

想必从事编码工作的我们,基本都听说过这句话。那么什么样的代码是高内聚,又如何低耦合呢。

今天咱们就来了解下在C#这个高级语言中,是通过那些形式来表现的。

在目前的高级语言中,这三个特点是共通的,也是我们日常编码中要经常使用的。就是封装、继承、多态

我们先来看看继承

类的继承

通过继承我们可以得到一个新的类,新类可以自己定义一系列方法和变量,同时拥有基类的属性和行为。

这里的关系是基类和派生类。

需要注意的是派生类不能删除基类的任何成员。

 class Ahui:InfoBase
 {
     public string GetInfo()
     {
         return this.Name+""+this.Age;
     }
 }

 class InfoBase
 {
     public int Age { get; set; }
     public int Name { get; set; }

     public string Love()
     {
         return "女";
     }
 }

上面的示例,InfoBase是属于基类,Ahui属于派生类,可以看到通过冒号来实现继承。

继承的成员可以被访问,就像它们是派生类自己声明的一样。

目前所有类都是派生自object类,object类是唯一的非派生类,它是继承层次结构的基础。目前没有基类规格说明的类隐式地直接派生自类object。

注意事项

1、一个类声明的基类规格说明中只能有一个单独的类,叫做单继承。

2、虽然类只能直接继承一个基类,但是继承的层次无限制。

目前派生类不能删除基类的成员和函数,但是可以通过派生类声明相同的成员来屏蔽基类成员和函数。这里需要注意名称必须相同

 class Program
 {
     static void Main(string[] args)
     {
         Ahui hui = new Ahui();
         Console.WriteLine(hui.Name);
         Console.ReadKey();
     }
 }

 class Ahui:InfoBase
 {
     public string Name = "阿姨";

     public string GetInfo()
     {
         return this.Name+""+this.Age;
     }
 }

 class InfoBase
 {
     public int Age=27;
     public string Name = "ahui";

     public string Love()
     {
         return "女";
     }
 }

寄语

人生短暂,我不想去追求自己看不见的,我只想抓住我能看得见的。

总结

到此这篇关于C#中的类继承详解的文章就介绍到这了,更多相关C#类继承内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 关于C#继承的简单应用代码分析

    比如,现在有一些图形,需要计算他们的面积,计算面积的方法都不一样,可以这么做 声明一个抽象类 //基类 abstract class Shape { //抽象方法 计算面积 public abstract double ComputerArea(); } 声明子类 //子类 继承Shape 实现抽象方法 class Circle : Shape { private double _radius; //构造函数 public Circle(double radius) => _radius = r

  • 深入理解C#之继承

    目录 C#之继承 能够阻止某个类被其他类继承吗? 那么我们该如何获得基类的构造函数和自身的构造函数呢? 都定义有构造函数时,那么执行顺序会怎样呢? 总结 C#之继承 继承.封装和多态是面向对象编程的重要特性. 其成员被继承的类叫基类也称父类,继承其成员的类叫派生类也称子类. 派生类隐式获得基类的除构造函数和析构函数以外的所有成员.派生类只能有一个直接基类,所以C#并不支持多重继承,但一个基类可以有多个直接派生类. 继承是可以传递的. 即:如果 ClassB 派生出 ClassC,ClassA 派

  • c# 继承快速入门

    在面向对象当中继承是非常重要的,也是面向对象的三大特性之一(继承.封装.多态),今天我们来揭开他的神秘面纱. 话不多说,我们上菜. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; /** * 假设我们公司有两种程序员: * java程序员指的是用java语法写程序的程序员,用Jpro这个类表示: * C#程序员指的

  • 浅谈C# 类的继承

    继承 一个类可以继承自另一个类.在 C#中,类与类之间只存在单一继承.也就是说,一个类的直接基类只能有一个.当类与类之间实现继承的时候,子类可以将它的直接基类的所有成员当做自己的成员,除了类的静态构造方法.实例构造方法和析构方法.但是,虽然基类的所有成员都可以当做子类的成员,但是如果基类的成员设置了不同的访问权限,则派生类可以访问的成员也随之不同.C#的继承是可以传递的,如果类C从类B派生,而类B从类A派生,则类C将继类B的所有成员,也继承类A的所有成员(各个基类的静态构造方法.实例构造方法和析

  • 深入分析c# 继承

    继承是面向对象程序设计中最重要的概念之一.继承允许我们根据一个类来定义另一个类,这使得创建和维护应用程序变得更容易.同时也有利于重用代码和节省开发时间. 当创建一个类时,程序员不需要完全重新编写新的数据成员和成员函数,只需要设计一个新的类,继承了已有的类的成员即可.这个已有的类被称为的基类,这个新的类被称为派生类. 继承的思想实现了 属于(IS-A) 关系.例如,哺乳动物 属于(IS-A) 动物,狗 属于(IS-A) 哺乳动物,因此狗 属于(IS-A) 动物. 基类和派生类 一个类可以派生自多个

  • C#中的类继承详解

    目录 前言 类的继承 注意事项 寄语 总结 前言 在日常的程序编码工作中,我们的最终目标是完成公司交给自己的开发任务,核心目标是写出好代码. 那么什么是好代码? 高内聚,低耦合 想必从事编码工作的我们,基本都听说过这句话.那么什么样的代码是高内聚,又如何低耦合呢. 今天咱们就来了解下在C#这个高级语言中,是通过那些形式来表现的. 在目前的高级语言中,这三个特点是共通的,也是我们日常编码中要经常使用的.就是封装.继承.多态. 我们先来看看继承 类的继承 通过继承我们可以得到一个新的类,新类可以自己

  • java开发中嵌套类的详解及实例

     java开发中嵌套类的详解 在java语言规范里面,嵌套类(Nested Classes)定义是: A nested class is any class whose declaration occurs within the body of another class or interface. A top level class is a class that is not a nested class. 说的简单一点,就是定义在类里面的类.一般把定义内部类的外围类成为包装类(enclos

  • C++中的类模板详解及示例

    C++中的函数模板 对于类的声明来说,也有同样的问题.有时,有两个或多个类,其功能是相同的,仅仅是数据类型不同,如下面语句声明了一个类: 复制代码 代码如下: class Compare_int{ public:  Compare(int a,int b)  {   x=a;   y=b;  }   int max()  {   return (x>y)?x:y;  }  int min()  {   return (x<y)?x:y;  } private:  int x,y;}; 其作用是

  • Python类定义和类继承详解

    一.类定义: class <类名>: <语句> 类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性 如果直接使用类名修改其属性,那么将直接影响到已经实例化的对象   类的私有属性: __private_attrs  两个下划线开头,声明该属性为私有,不能在类地外部被使用或直接访问 在类内部的方法中使用时 self.__private_attrs    类的方法 在类地内部,使用def关键字可以为类定义一个方法,与一般函数定义不同,类方法必须包含参数self,

  • pandas中Timestamp类用法详解

    由于网上关于Timestamp类的资料比较少,而且官网上面介绍的很模糊,本文只是对如何创建Timestamp类对象进行简要介绍,详情请读者自行查阅文档. 以下有两种方式可以创建一个Timestamp对象: 1. Timestamp()的构造方法 import pandas as pd from datetime import datetime as dt p1=pd.Timestamp(2017,6,19) p2=pd.Timestamp(dt(2017,6,19,hour=9,minute=1

  • ES6 javascript中Class类继承用法实例详解

    本文实例讲述了ES6 javascript中Class类继承用法.分享给大家供大家参考,具体如下: 1. 基本用法 Class 之间可以通过extends关键字实现继承, 这比 ES5 的通过修改原型链实现继承, 要清晰和方便很多. class ColorPoint extends Point {} 上面代码定义了一个ColorPoint类, 该类通过extends关键字, 继承了Point类的所有属性和方法. 但是由于没有部署任何代码, 所以这两个类完全一样, 等于复制了一个Point类. 下

  • Java中的重要核心知识点之继承详解

    目录 一.继承 1.概念 2.语法 3.父类成员的访问 (1)子类中访问父类成员变量 (2)子类中访问父类成员方法 4.super关键字 5.子类构造方法 6.super和this 7.代码块执行顺序 8.父类成员在子类中的可见性 9.继承方式 10.final关键字 11.组合 一.继承 1.概念 继承(inheritance)机制:是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特 性的基础上进行扩展,增加新功能,这样产生新的类,称派生类.继承呈现了面向对象程序设计的

  • Java中IO流 RandomAccessFile类实例详解

    Java中IO流 RandomAccessFile类实例详解 RandomAccessFile java提供的对文件内容的访问,既可以读文件,也可以写文件. 支持随机访问文件,可以访问文件的任意位置. java文件模型,在硬盘上的文件是byte byte byte存储的,是数据的集合 打开文件,有两种模式,"rw"读写."r"只读:RandomAccessFile raf = new RandomAccessFile(file, "rw");,文

  • java 中 String format 和Math类实例详解

    java 中 String format 和Math类实例详解 java字符串格式化输出 @Test public void test() { // TODO Auto-generated method stub //可用printf(); System.out.println(String.format("I am %s", "jj")); //%s字符串 System.out.println(String.format("首字母是 %c",

  • C++中对象与类的详解及其作用介绍

    目录 什么是对象 面向过程 vs 面向对象 面向过程 面向对象 什么是类 类的格式 类的成员函数 函数访问权限 方法一 方法二 方法三 inline 成员函数 什么是对象 任何事物都是一个对象, 也就是传说中的万物皆为对象. 对象的组成: 数据: 描述对象的属性 函数: 描述对象的行为, 根据外界的信息进行相应操作的代码 具有相同的属性和行为的对象抽象为类 (class) 类是对象的抽象 对象则是类的特例 面向过程 vs 面向对象 面向过程 面向过程的设计: 围绕功能, 用一个函数实现一个功能

随机推荐