首页 > 编程语言 >[C#基础学习]继承

[C#基础学习]继承

时间:2023-07-05 23:45:04浏览次数:37  
标签:dad child1 C# 子类 学习 继承 父类 class 构造函数

C#中极其有用的功能。

基本概念

某个类可以继承其他类的内容并继续发展。被继承的类一般叫父类,继承者一般叫子类。

一个子类只能有一个父类(C++倒是可以多继承,但是C#就不行),并且可以继承父类的父类。

class a//这是爹
{
    void funcDad(){}
}

class b: a //儿子来咯
{
    //这里可以引用funcDad()
} 

class c: a,b //违法

同名成员

在子类定义了与父类同名的参数或函数,则父类的参数或函数会被子类覆盖。不推荐用。

class a{
	public float num;
}

class b: a{
    public float num;//同名成员
}

继承内的构造函数

​ 和之前的构造函数一致

class a{
	a();
}
class b: a{
	b(){};
}

执行顺序:a() -> b(),会先进行父类构造函数再到子类构造函数。如果父类缺失构造函数(未显式定义),但子类调用了子类构造函数,则立刻报错。必须补全父类的构造函数(即使是空)才能调用子类构造函数。

如果希望调用特定的父类构造函数,则使用base()

class a{
    a(){}
	a(int i){}
}
class b: a{
    b(int i): base(i){}
}

访问修饰符

访问修饰符名字作用 作用
public 全都能访问
private 仅限当前类,但子类不能直接用
protected 仅限当前类,但子类也可以用
internal 仅限当前程序集,也就是单个dll或单个exe内

里氏替换原则

​ 用父类装载子类

class dad{
	void func
}
class child1: dad{
	void childfunc1()
}
class child2: dad{
	void childfunc2()
}
static void main()
{
	dad a = new child1();
	dad b = new child2();
}

但是此时父类容器不能调用子类方法。

a.childfunc1()//不能调用

解决方案: is 和 as

if( a is child1)//是否为这个类
    ;
else if(a is child2)
    ;
child1 temp = a as child1;//转换为指定类,转换失败则返回空
if(temp != null)//是否为空
	....;//execute

标签:dad,child1,C#,子类,学习,继承,父类,class,构造函数
From: https://www.cnblogs.com/ComputerEngine/p/17530637.html

相关文章

  • es笔记三之term,match,match_phrase 等查询方法介绍
    本文首发于公众号:Hunter后端原文链接:es笔记三之term,match,match_phrase等查询方法介绍首先介绍一下在es里有两种存储字符串的字段类型,一个是keyword,一个是text。keyword在存储数据的时候是作为一个整体存储的,不会对其进行分词处理text存储数据的时候会对字符串进行分......
  • HTML&CSS
    HTMLHTML是一门语言,所有的网页都是用HTML这门语言编写出来的HTML(HyperTextMarkupLanguage):超文本标记语言 超文本:超越了文本的限制,比普通文本更强大。除了文字信息,还可以定义图片、音频、视频等内容 标记语言:由标签构成的语言HTML运行在浏览器上,HTML标签由浏览器......
  • 2023.0705 学习记录(递归,var,foreach,Array)
    递归1.做一个累乘的递归代码:publicstaticintmultiplications(inta){if(a==1){return1;}returna*multiplications(a-1);}2.做一个1-2+3-4..递归pub......
  • java进阶3:GC 的背景与一般原理
    为什么会有GC其最本质的原因是因为内存资源的稀缺性。我们计算机最核心的资源是CPU和内存,CPU是随着计算机一直存在的东西,核数有限但是一直存在;但内存比较稀缺,A占满了,B就不能用了,我们怎么可以共享使用这个内存呢,这就是GC产生的原因了。背景:在传统的编程语言中,程序员需要手动分配和释......
  • 六月学习之Haproxy高级功能(一)
    6、Haproxy高级功能6.1、基于cockie会话保持在backend服务器组启用cookie植入功能haproxy会将后端服务器定义的serverID植入到客户端的cookie中,以保持会话的持久性,需要设置backend中的cookie以及server指定的cookie选项6.1.1、配置示例1、配置haproxy基于cookie实现会话绑定#mai......
  • CentOS 7.9配置SSH白名单用户、白名单IP和基于公钥认证实现免密登录
    一、演示环境:IPHostnameOS192.168.0.200server1CentOS7.9192.168.0.201server2CentOS7.9192.168.0.202server3CentOS7.9说明:1、上述3台主机都关闭了firewalld和SELinux;2、每一次演示后,所有主机都会恢复默认配置。二、配置SSH白名单用户登录:1、server1中创建测试用户user1、user2......
  • leetcode-1629-easy
    SlowestKeyYouhaveabombtodefuse,andyourtimeisrunningout!Yourinformerwillprovideyouwithacirculararraycodeoflengthofnandakeyk.Todecryptthecode,youmustreplaceeverynumber.Allthenumbersarereplacedsimultaneously.I......
  • leetcode-1652-easy
    DefusetheBombYouhaveabombtodefuse,andyourtimeisrunningout!Yourinformerwillprovideyouwithacirculararraycodeoflengthofnandakeyk.Todecryptthecode,youmustreplaceeverynumber.Allthenumbersarereplacedsimultaneously......
  • CISCN东北赛区-2023-pwn-all
    CISCN东北赛区-2023-pwn-allNoviceChallenge漏洞利用改strlen的got表EXP#!/usr/bin/envpython3frompwncliimport*cli_script()io:tube=gift.ioelf:ELF=gift.elflibc:ELF=gift.libcfilename=gift.filename#currentfilenameis_debug=gift.deb......
  • go select 使用总结
    转载请注明出处:在Go语言中,select语句用于处理多个通道的并发操作。它类似于switch语句,但是select语句用于通信操作,而不是条件判断。select语句会同时监听多个通道的操作,并选择其中一个可用的通道进行操作。select语句的语法如下:select{case<-channel1://......