C#学习系列之抽象类和抽象方法

C#学习系列之抽象类和抽象方法


啰嗦

学习基础


抽象方法

abstract public void Func();

在基类中如果使用abstract,不能有函数体,那么必须在派生类要用override进行重写。用虚方法可不用重写。因为没有函数体,必须重写。

  • 抽象成员:方法、属性、事件、索引。
  • 必须用abstract修饰符标记
  • 不能有实现代码块

抽象类

  • 抽象类的存在只有一个目的,被继承
  • 抽象类不能被实例化,用abstract修饰。
  • 抽象类可以包含抽象成员和普通成员,以及任意组合。
  • 抽象类的抽象成员在派生类中需要用override关键字实现。

使用

csharp 复制代码
    class pet
    {
        public pet(string name)
        {
            _name = name;
        }
        protected string _name;
	    abstract public void speak();//没有函数体
    }
    class dog:pet
    {
        public dog(string name):base(name)
        {

        }
	    override public void speak()//重写
        {
            Console.WriteLine("");
        }
    }
    class cat : pet
    {
	    override public void speak();//重写基类的虚方法
    }

总结

学习记录

https://www.imooc.com/video/14228

相关推荐
思成Codes5 分钟前
Go 语言中数组与切片的本质区别
开发语言·后端·golang
Gofarlic_oms114 分钟前
Cadence许可证全生命周期数据治理方案
java·大数据·运维·开发语言·人工智能·安全·自动化
成为大佬先秃头15 分钟前
渐进式JavaScript框架:Vue — API
开发语言·javascript·vue.js
期待のcode18 分钟前
Java String类
java·开发语言
资生算法程序员_畅想家_剑魔18 分钟前
Java常见技术分享-17-多线程安全-并发编程的核心问题的解决方案
java·开发语言
superman超哥18 分钟前
Rust Trait约束(Trait Bounds):类型能力的精确契约
开发语言·后端·rust·rust trait约束·trait bounds·类型能力·精确契约
myq9920 分钟前
第三章:Java异常处理
java·开发语言·笔记
superman超哥21 分钟前
Rust Where子句的语法:复杂约束的优雅表达
开发语言·后端·rust·rust where子句·复杂约束·优雅表达
靠沿25 分钟前
Java数据结构初阶——堆与PriorityQueue
java·开发语言·数据结构
先做个垃圾出来………26 分钟前
搜索树完整
开发语言·javascript·ecmascript