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

相关推荐
I'm Jie6 分钟前
Gradle 的项目结构与源码集(Source Sets)详解(Kotlin DSL)
android·java·开发语言·spring boot·spring·kotlin·gradle
chilavert31829 分钟前
技术演进中的开发沉思-151 java-servlet:会话管理
java·开发语言
Larry_Yanan32 分钟前
QML学习笔记(四十七)QML与C++交互:上下文对象
c++·笔记·qt·学习·ui
Vizio<38 分钟前
《模仿人类皮肤层与环层小体的社交交互机器人皮肤》2024 IEEE/ASME TMECH 论文解读
人工智能·笔记·学习·机器人·交互·触觉传感器
霸道流氓气质39 分钟前
Java中使用Collator实现对象List按照中文姓名属性进行A-Z的排序实现
java·开发语言·list
ttghgfhhjxkl42 分钟前
《macOS 配置 GO 语言后,如何切换不同 GO 版本?》
开发语言·macos·golang
星光一影44 分钟前
基于Jdk17+SpringBoot3AI智慧教育平台,告别低效学习,AI精准导学 + 新架构稳跑
java·学习·mysql
长存祈月心1 小时前
安装与切换Rust版本
开发语言·后端·rust
剑指~巅峰1 小时前
Rust智能指针的奇妙之旅:从踩坑到顿悟
开发语言·人工智能·深度学习·机器学习·rust
m0_748231311 小时前
从企业开发到AI时代:Java的新征程与技术蜕变
java·开发语言·人工智能