C#基础知识之base、this、new、override、abstract梳理
一、Base关键词的几种用法
base重要用于OOP的多态上,base 关键字用于在派生类中实现对基类公有或者受保护成员的访问,但是只局限在构造函数、实例方法和实例属性访问器中
1、base调用基类构造函数
using System;namespace BaseDemo
{class Program{static void Main(string[] args){B b = new B();Console.ReadLine();}}public class A{public A(){Console.WriteLine("Build A");}}public class B : A{public B() : base(){Console.WriteLine("Build B");}}
}
执行结果:
2、base在派生类中调用基类的方法
using System;namespace BaseDemo
{class Program{static void Main(string[] args){B b = new B();b.Hello();Console.ReadLine();}}public class A{public virtual void Hello(){Console.WriteLine("Hello");} }public class B : A{public override void Hello(){base.Hello();}}
}
执行结果:
二、this关键字
1、 this代表当前类的实例对象
using System;namespace thisDemo
{class Program{static void Main(string[] args){A a = new A();a.GetName();Console.ReadKey();}}public class A{private string name = "qxh";public void GetName(){string name = "欢迎你";// this代表A的实例对象// 所以this.name对应的是"qxh"// name对应的是GetName方法内的局部变量Console.WriteLine($" {this.name} - {name}");}}
}
执行结果:
2、 用this串联构造函数
using System;namespace thisDemo
{class Program{static void Main(string[] args){A a = new A("qxh");Console.ReadKey();}}public class A{public A(){Console.WriteLine("无参构造函数");}// this()对应无参构造方法A()// 先执行A(),后执行A(string text)public A(string text) : this(){Console.WriteLine(text);Console.WriteLine("有参构造函数");}}
}
执行结果:
3、扩展方法
using System;namespace thisDemo
{class Program{static void Main(string[] args){string name = "qxh";Console.WriteLine(name.ShowInfo("欢迎你"));Console.ReadKey();}}/// <summary>/// 必须是静态类/// </summary>public static class A{public static string ShowInfo(this string str, string info){return $"{str}-{info}";}}
}
执行结果:
4、索引器:参数可以是int,也可以是string等其他类型
using System;namespace thisDemo
{class Program{static void Main(string[] args){A a = new A();Console.WriteLine(a["qxh"]);Console.ReadKey();}}public class A{public string Name { get; set; }//索引器 []括号里面可以是string,int,array等public string this[string index]{get{if (index == "qxh"){return index;}else{return "gg";}}set{Name = value;}}}
}
执行结果:
三、New关键字
1、new 运算符:用于创建对象和调用构造函数
(1)特点
new一个class时,new完成了以下两个方面的内容:一是调用new class命令来为实例在托管堆中分配内存;二是调用构造函数来实现对象初始化。
new一个struct时,new运算符用于调用其带构造函数,完成实例的初始化。
new一个int时,new运算符用于初始化其值为0。
new运算符不可重载。
new分配内存失败,将引发OutOfMemoryException异常。
(2)demo
static void Main(string[] args)
{A a = new A();//new操作符 创建对象和调用构造函数 Console.ReadKey();
}
2、new 修饰符:new 关键字可以显式隐藏从基类继承的成员
new 关键字可以显式隐藏从基类继承的成员。 隐藏继承的成员时,该成员的派生版本将替换基类版本。 虽然可以在不使用 new 修饰符的情况下隐藏成员,但会生成警告。 如果使用 new 显式隐藏成员,则会取消此警告,并记录要替换为派生版本这一事实。下面是隐藏 A中的Name属性
public class A
{public string Name { get; set; } = "qxh";
}public class B : A
{new public string Name { get; set; } = "dachong";
}
3、new 约束:用于在泛型声明中约束可能用作类型参数的参数的类型
new 约束指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数。如果要使用 new 约束,则该类型不能为抽象类型。当与其他约束一起使用时,new() 约束必须最后指定:
public class A<T>where T : IComparable, new()
{}
四、override关键字
要扩展或修改继承的方法、属性、索引器或事件的抽象实现或虚实现,必须使用 override 修饰符。 由 override 声明重写的方法称为重写基方法。重写的基方法必须与 override 方法具有相同的签名。不能重写非虚方法或静态方法。 重写的基方法必须是 virtual、abstract 或 override 的。用关键字 virtual 修饰的方法,叫虚方法。可以在子类中用override 声明同名的方法,这叫“重写”。相应的没有用virtual修饰的方法,我们叫它实方法。
using System;namespace thisDemo
{class Program{static void Main(string[] args){B b = new B();b.Show();Console.ReadKey();}}public class A{public virtual void Show(){Console.WriteLine("A");}}public class B : A{public override void Show(){Console.WriteLine("B");}}
}
执行结果:
五、abstract关键字
用关键字abstract定义的类即为抽象类,且只能作为基类,也不能被实例化。
用abstract定义的类不一定包含抽象方法,也可以包含非抽象方法。
abstract定义的方法一定包含在抽象类中。
抽象类不能定义为密封类(sealed),抽象方法不能使用virtual、static、private修饰符
如果派生类没有实现所有的抽象方法,则该派生类也必须声明为抽象类。
C#基础知识之base、this、new、override、abstract梳理相关推荐
- 打印机没有反应计算机管理,计算机基础知识:如何解决打印机没有反应的问题(二)...
[导语]在事业单位考试中,计算机专业知识的复习向来是考生复习备考阶段的一大重点,其中中公事业单位考试网为计算机基础知识的复习为考生提供知识点梳理,帮助考生备考! 1.在打印机无法正常工作时,我们需要检 ...
- 网络基础知识_你家的网络是这么布线的吗?家庭网络布线基础知识普及!
这篇文章很早很早之前想写的,结果给忘记了,今天给补起来! 除了那种大型别墅外,绝大部分家庭网络并不会多复杂,在智能硬件越来越多的今天,在保证所有使用位置信号全覆盖的同时,最好心里对家里的网络布局有个很 ...
- 事业单位计算机知识c语言,事业单位考试计算机基础知识C语言程序设计
事业单位考试计算机基础知识C语言程序设计 [导语]在事业单位考试中,计算机专业知识的复习向来是考生复习备考阶段的一大重点,其中中公事业单位考试网为计算机基础知识的复习为考生提供知识点梳理,帮助考生备考 ...
- 计算机基础知识教程excel函数计算,计算机基础知识:Excel中的函数操作(四)...
[导语]在事业单位考试中,计算机专业知识的复习向来是考生复习备考阶段的一大重点,其中中公事业单位考试网为计算机基础知识的复习为考生提供知识点梳理,帮助考生备考! 一.CONCATENATE函数 函数名 ...
- 计算机ppt操作知识,计算机基础知识:PPT常用操作(三)
[导语]在事业单位考试中,计算机专业知识的复习向来是考生复习备考阶段的一大重点,其中中公事业单位考试网为计算机基础知识的复习为考生提供知识点梳理,帮助考生备考! 一.快速选择多个对象 在powerpo ...
- 免费计算机操作基础知识ppt,计算机基础知识:PPT常用操作(四)
[导语]在事业单位考试中,计算机专业知识的复习向来是考生复习备考阶段的一大重点,其中中公事业单位考试网为计算机基础知识的复习为考生提供知识点梳理,帮助考生备考! 一.PPT编辑放映两不误 按住Ctrl ...
- 电脑开始菜单计算机基础知识,计算机基础知识:计算机中的开始菜单
[导语]在事业单位考试中,计算机专业知识的复习向来是考生复习备考阶段的一大重点,其中中公事业单位考试网为计算机基础知识的复习为考生提供知识点梳理,帮助考生备考! 计算机的一切操作都可以从"开 ...
- 计算机基础知识WORD7,计算机基础知识:Word常用操作(7).doc
计算机基础知识:Word常用操作(七) [导语]在事业单位考试中,计算机专业知识的复习向来是考生复习备考阶段的一大重点,河南人事考试网为计算机基础知识的复习为考生提供知识点梳理,帮助考生备考! 一.打 ...
- 计算机word基础知识ppt,计算机基础知识:PPT常用操作(四)
[导语]在事业单位考试中,计算机专业知识的复习向来是考生复习备考阶段的一大重点,其中中公事业单位考试网为计算机基础知识的复习为考生提供知识点梳理,帮助考生备考! 一.PPT编辑放映两不误 按住Ctrl ...
最新文章
- Mysql (二)Mysql 数据库表增删改查
- Bootstrap + Thymeleaf——预约维修前端页面设计(UI + JS数据校验 + JSON序列化 + AJAX提交)DEMO
- python history文件_【python之路19】文件操作
- iOS开发:对于AFNetworking HTTP转HTTPS请求证书问题
- ORA-28056,安装Oracle出错
- 死磕 java同步系列之AQS起篇
- vue、react隐式实例化
- 监听套接字为什么要设置成非阻塞的?
- linux注册节点报错,Linux 运维4月17日 5.102-5.103
- Qt TextEdit 不自动换行 取消换行
- [手机Linux]一,线刷小米6到开发版,获取root权限
- 零点定理和罗尔定理的完善?
- php做网站需要的技术,建网站需要什么技术
- #459 津津有味:北方人对饺子的痴迷可能是刻进骨子里的
- 从数据仓库到数据集市
- 嵌入式主板助力电力巡检
- C++实现基于区块链的物流信息存储系统
- 串行器 MAX96717F 芯片介绍
- AP自动注册改标识、AC虚拟配置管理、PC连接WiFi(华为ENSP)
- 计算机毕业设计Java大学生兼职平台(源码+系统+mysql数据库+lw文档
热门文章
- 冒名者还是重名?疑惑中!
- oracle静默安装集群,静默安装Oracle数据库10g篇
- STM32的FLASH ID加密
- 安装mongoDB遇见的一个路径问题
- hdu-2612-Find a way(广搜,bfs)
- 【mysql必知必会】第十二章 汇总数据
- Httpclient发送json请求
- event.x,event.clientX,event.offsetX区别
- 用java编写一个计算器_用java程序编写一个计算器
- 三阶魔方魔方公式_观看此魔方的自我解决