首页 > 编程语言 >C#虚方法和抽象方法

C#虚方法和抽象方法

时间:2024-03-26 09:12:26浏览次数:12  
标签:C# void abstract 抽象 virtual new 方法 public

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace test0322
{
    public abstract class TestAbstract//抽象方法只能在抽象类中定义;虚方法则不是
    {
        public abstract void Run();

        //public abstract void Run1() { }//报错,抽象方法不能有实现

        public abstract int I1 { get; }//abstract可以用来修饰类,方法,属性,索引器
        public abstract string this[int index] { get; set; }
    }
    public class TestVirtual//抽象方法只能在抽象类中定义;虚方法则不是
    {
        // public abstract void Run();//报错,因抽象方法只能在抽象类中定义。

        //  public virtual void Run1();//报错,虚方法必需要有实现

        public virtual void Run2() { }//虚方法必需要有实现
        public virtual void Run3() { }//虚方法必需要有实现,不必需在子类重写.
        public virtual int I1 { get; }//virtual可以用来修饰类,方法,属性,索引器
        public virtual string this[int index] { get => ""; set => value = ""; }
    }
    public class abs : TestAbstract
    {
        public override string this[int index] { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }

        public override int I1 => throw new NotImplementedException();

        public override void Run()//抽象方法必需再子类重写.
        {
            throw new NotImplementedException();
        }
    }
    public class vir : TestVirtual
    {
        public override void Run2()//虚方法不必需在子类重写.
        {
            throw new NotImplementedException();
        }
    }
    public class test
    {
        //TestAbstract testAbstract = new TestAbstract();//抽象父类不能实例
        TestAbstract testAbstract1 = new abs();

        TestVirtual testVirtual = new TestVirtual();
        TestVirtual testVirtual1 = new vir();

    }
}

 

标签:C#,void,abstract,抽象,virtual,new,方法,public
From: https://www.cnblogs.com/hiyanhao/p/18095844

相关文章

  • 如何使用 JavaScript 导入和导出 Excel
    前言在现代的Web应用开发中,与Excel文件的导入和导出成为了一项常见而重要的任务。无论是数据交换、报告生成还是数据分析,与Excel文件的交互都扮演着至关重要的角色。本文小编将为大家介绍如何在熟悉的电子表格UI中轻松导入Excel文件,并以编程方式修改表格或允许用户进行编辑,最......
  • 【Cesium源码系列】Cesium的相机(1)
    Cesium相机内部保存着相机的基本信息,主要有以下几个属性:_transform:对外只读,变换矩阵_invTransform:对外只读,变换矩阵的逆_actualTransform:对内,实际变换矩阵_actualInvTransform:对内,实际变换矩阵的逆position:对外,相机的位置_position:对内,相机的位置_positionWC:对外只读,相机......
  • Java服务器开发的日志:日志的作用和使用方法;日志文件的定期归档、清理和滚动策略;ELK(又
    Java服务器开发的日志Java服务器开发,为什么要使用日志?应该怎样使用日志?在Java服务器开发中使用日志是非常关键的一个实践,原因如下:本文所说的“日志”,主要是指程序运行时生成的技术日志;它在Java服务器开发中的作用和使用方法如下:故障诊断:技术日志主要用于记录程序运......
  • OpenFeign 维护状态 和 HTTP客户端 @HttpExchange
    OpenFeign维护状态OpenFeign还在维护吗?根据提供的搜索结果,OpenFeign(SpringCloudOpenFeign)是一个由Spring官方推出的声明式服务调用与负载均衡组件。它是对Feign的二次封装,不仅继承了Feign的所有功能,还增加了对SpringMVC注解的支持。Feign本身在2019年由Netflix公司......
  • H264/H265的两种格式Annex B、AVCC(H264)/HVCC(H265)
            H.264(AVC)和H.265(HEVC)是两种常见的视频编码标准,它们都有不同的封装格式,即AnnexB和AVCC(H264)/HVCC(H265)封装格式。1、AnnexB封装格式        AnnexB是H264/H265中适合流式传输的一种封装格式,在这种封装格式下,视频码流被分割成称为......
  • JAVA中CAS原理
    在Java中,CAS(Compare-and-Swap)是一种无锁算法,通过JNI(JavaNativeInterface)调用本地方法来利用处理器提供的原子指令实现。它可以保证在多线程环境下的原子性和可见性,而无需使用传统的锁机制。以下是一个简单的Java示例,通过java.util.concurrent.atomic包下的AtomicInteger类来......
  • nestJs中 Guards ,Interceptors ,Pipes ,Controller ,Filters的执行顺序
    执行顺序:Guards(守卫):Guards是最先执行的中间件,用于确定是否允许请求继续处理。Guards在请求被路由到控制器之前执行,通常用于身份验证、角色检查或权限验证。如果Guards返回一个布尔值 false 或者抛出一个异常,请求处理流程将终止,不会执行后续的Pipes、Interceptors或控......
  • 基于EP4CE6F17C8的FPGA双数码管六十进制秒计数实例
    一、电路模块本例的电路模块与“基于EP4CE6F17C8的FPGA数码管动态显示实例”中的完全一样,此处就不再给出了。二、实验代码本例实现2个数码管循环显示00~59,显示间隔为1秒,代码使用Verilog编写,采用例化的形式,共有三个文件。先编写数码管实现显示字形解码的程序,模块名称为seg_deco......
  • [附源码]计算机毕业设计高校教材管理系统(JSP+java+springmvc+mysql+MyBatis)
    本项目包含程序+源码+数据库+LW+调试部署环境,文末可获取一份本项目的java源码和数据库参考。项目文件图项目介绍随着高校教育资源的不断扩充和教育体系的日益复杂化,高效的教材管理变得尤为重要。一个专业的高校教材管理系统能够实现教材信息的集中管理、库存状态实时监控、......
  • [附源码]计算机毕业设计大学生创新项目管理系统(JSP+java+springmvc+mysql+MyBatis)
    本项目包含程序+源码+数据库+LW+调试部署环境,文末可获取一份本项目的java源码和数据库参考。项目文件图项目介绍随着高等教育的不断发展,大学生创新项目成为培养学生创新能力和实践能力的重要途径。有效的项目管理对于确保创新项目的顺利进行和高质量完成至关重要。然而,目前......