[转]C#中的abstract 类和方法
时间:2019-11-13
本文章向大家介绍[转]C#中的abstract 类和方法,主要包括[转]C#中的abstract 类和方法使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
转:https://www.cnblogs.com/zzy2740/archive/2005/09/20/240808.html
C#中的abstract类不能被实例化,他只提供其他类的继承的接口
using System; abstract class MyAbs { public void NonAbMethod() { Console.WriteLine("Non-Abstract Method"); } } class MyClass : MyAbs { }
class MyClient { public static void Main() { //MyAbs mb = new MyAbs();//不能实例化 MyClass mc = new MyClass(); mc.NonAbMethod(); } }
一个抽象类可以包含abstract方法,也可包含实例化方法,但继承类(非抽象)必须实现abstract方法
abstract class MyAbs { public void NonAbMethod() { Console.WriteLine("Non-Abstract Method"); } public abstract void AbMethod(); // 抽象方法,只有声明,没有实现 } class MyClass : MyAbs//必须实现抽象方法 { public override void AbMethod() { Console.WriteLine("Abstarct method"); } } class MyClient { public static void Main() { MyClass mc = new MyClass(); mc.NonAbMethod(); mc.AbMethod(); } }
当然继承类也可以是抽象的
abstract class MyAbs { public abstract void AbMethod1(); public abstract void AbMethod2(); } //抽象继承类不必全部实现抽象方法,部分实现便可 abstract class MyClass1 : MyAbs { public override void AbMethod1() { Console.WriteLine("Abstarct method #1"); } } class MyClass : MyClass1 { public override void AbMethod2() { Console.WriteLine("Abstarct method #2"); } } class MyClient { public static void Main() { MyClass mc = new MyClass(); mc.AbMethod1(); mc.AbMethod2(); } }
抽象类可以继承自非抽象类
class MyClass1 { public void Method1() { Console.WriteLine("Method of a non-abstract class"); } } abstract class MyAbs : MyClass1 { public abstract void AbMethod1(); } class MyClass : MyAbs//实例类必须实现抽象方法 { public override void AbMethod1() { Console.WriteLine("Abstarct method #1 of MyClass"); } } class MyClient { public static void Main() { MyClass mc = new MyClass(); mc.Method1(); mc.AbMethod1(); } }
抽象类可以实现接口
interface IInterface { void Method1(); } abstract class MyAbs : IInterface { public void Method1() { Console.WriteLine("Method implemented from the IInterface"); } } class MyClass : MyAbs { } class MyClient { public static void Main() { MyClass mc = new MyClass(); mc.Method1(); } }
最后需要注意的是抽象类不能声明为sealed,这两个语义是冲突的。抽象方法不必(也不能)声明为virtual,因为它缺省隐含就为virtual!
原文地址:https://www.cnblogs.com/sggggr/p/11847293.html
- ASP.NET MVC集成EntLib实现“自动化”异常处理[实例篇]
- ASP.NET Core管道深度剖析(2):创建一个“迷你版”的管道来模拟真实管道请求处理流程
- 机器学习实战之决策树
- 初学ReactJS,写了一个RadioButtonList组件
- 今天,你有微信小游戏提交审核吗?
- 云计算,迷你版线程同步
- Kubernetes 年度关键进展回顾
- 比较一下以“反射”和“表达式”执行方法的性能差异
- 人工智能芯片是什么?有什么用?
- 柯洁食言“复出”再战AI:明年4月见分晓
- 深入探讨ASP.NET MVC的筛选器
- pytorch自然语言处理之Pooling层的句子分类
- su命令cannot set groups: Operation not permitted的解决方法
- 利用腾讯云 COS 云对象存储定时远程备份网站
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 一次 Redis 分布式锁事故,整个项目组被扣绩效了。。。
- 小程序访问https显示网络错误,微信打开https空白、浏览器访问正常 解决方案
- Python GUI项目实战(七)学生信息的修改、删除和保存
- Python | 使用argparse解析命令行参数
- LeetCode 98 | 判断二叉搜索树是否合法
- LeetCode 96,n个数构建BST的方法有多少种?
- Go语言 | goroutine不只有基础的用法,还有这些你不知道的操作
- 每日一题 | 二进制操作问题
- Pandas | Dataframe的merge操作,像数据库一样尽情join
- 每日一题 | 灾后重建问题
- 树形结构已知子节点找父节点
- 解析 hashMap 源码之基本操作 get
- RCE(远程命令/代码执行漏洞)原理及复现
- 我的Vue不小心跨域了o(╥﹏╥)o 干它
- 金九银十准备季——Java后端多线程&并发面试题及答案(二)