前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >C#进阶学习--抽象方法(abstract)

C#进阶学习--抽象方法(abstract)

原创
作者头像
腾云大使
修改于 2022-01-13 03:12:41
修改于 2022-01-13 03:12:41
1K0
举报

一.定义

抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象
定义关键字:abstract
重写关键字:override

二.抽象类特点

1.抽象方法一定要写在抽象类中,
2.抽象方法没有方法体
3.抽象类可以包含非抽象的方法,如普通方法,虚方法等
4.继承的子类如果没实现父类中所有的抽象方法,那么这个子类也必须是抽象类
5.抽象类不能实例化,且不能被密封(即不可使用sealed修饰),但仍然可以具有构造方法

三.抽象类与接口的异同

相同点

1.都可以被继承
2. 都不能被实例化
3.都可以包含方法声明
4.子类必须实现未实现的方法

不同点

1.抽象类只能单一继承,接口可以实现多继承
2.抽象类中可以有普通方法,虚方法等,接口只能写规范,不可实现
3.抽象基类可以定义字段、属性、方法实现。接口只能定义属性、索引器、事件、和方法声明,不能包含字段。

四.实例

代码语言:C#
AI代码解释
复制
    public abstract class Person
    {
        public string Name { get; set; }
        public int age { set; get; }
        public void SayHello()//普通方法
        {
            Console.WriteLine("我是" + this.Name + ",我的年龄是" + this.age);
        }
        public virtual int getAge()//虚方法
        {
            return this.age;
        }
        public abstract string getName();
    }

 public interface IAction
    {
        void Run();
        string Eat(string food);
    }

 public class Student : Person, IAction
    {
        public override string getName()
        {
            return "学生姓名为" + this.Name;
        }
        public string Eat(string food)
        {
            return "学生在吃" + food;
        }
        public void Run()
        {
            Console.WriteLine("学生在跑");
        }
    }

至此,抽象方法的总结结束......

最后,其实所有的数据测试可以在云服务器进行,大家可以看看腾讯云的相关服务,买来作为测试数据的服务器非常不错,最低只要38一年

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python3 与 C# 面向对象之~继承与多态
文章汇总:https://www.cnblogs.com/dotnetcrazy/p/9160514.html
逸鹏
2018/06/23
1.7K2
Python3 与 C# 面向对象之~继承与多态
C# 中类与继承等概念
虚方法实现多态: 首先将父类函数标记为虚方法,然后子类就可以重写父类的虚方法,实现多态。
王 瑞
2022/12/28
3810
C#基础知识系列七(base、this、new、override、abstract、virtual、static)
本文主要来讲解一下C#中,自己觉得掌握的不怎么样或者用的不多,不太熟悉的关键字,主要包括base、this、new、override、abstract、virtual以及针对static字段和static构造函数之间的执行问题。
aehyok
2018/08/31
6930
C#基础知识系列七(base、this、new、override、abstract、virtual、static)
C#基础知识之base、this、new、override、abstract梳理
base重要用于OOP的多态上,base 关键字用于在派生类中实现对基类公有或者受保护成员的访问,但是只局限在构造函数、实例方法和实例属性访问器中
用户9127601
2021/11/01
4950
Java学习笔记之多态&抽象类&接口
    提供程序的扩展性,定义方法的时候,使用父类型作为参数,在使用的时候,使用具体的子类行参与操作
Jetpropelledsnake21
2021/11/30
3380
Java学习笔记之多态&抽象类&接口
C#中Abstract 、Virtual和Override的使用
1. abstract 修饰符指示所修饰的内容缺少实现或未完全实现。 abstract 修饰符可用于类、方法、属性、索引器和事件。在类声明中使用abstract修饰符以指示某个类只能是其他类的基类。标记为抽象或包含在抽象类中的成员必须通过从抽象类派生的类来实现。
用户2282526
2021/06/11
1.4K0
C#中Abstract 、Virtual和Override的使用
【Java 学习】:抽象类&接口
💢💢在Java中,一个类如果被 abstract 修饰称为抽象类,抽象类中被 abstract 修饰的方法称为抽象方法,抽象方法不用给出具体的实现体。
IsLand1314
2024/10/15
1850
【Java 学习】:抽象类&接口
C1第 1 节: 面向对象类的介绍和继承
第 1 节: 面向对象类的介绍和继承 1、字段和属性可以看成是。这个对象的特征; 2、如果出现了曲线错误提示,鼠标放在那里,点击F6(或者等片刻); 3、子类默认调用父类无参数的构造函数,如果父类中没有默认的无参数的构造函数,需要手动添加无参数的构造函数; 4、子类也可以调用父类的有参数的构造函数,利用:base(); public Student(string name, int age ):base(name,age)//可以先写半个括号,就会有自动提示了。。 {
静心物语313
2020/03/24
4290
抽象类,摘要方法
狮子、猴子和鸽子都是一种动物。因此,能够建立一个Animal 抽象基类,让狮子、猴子和鸽子从其派生出来
全栈程序员站长
2022/07/06
3880
java abstract 关键字 抽象方法和抽象类的使用详解
1.关键字2.抽象类3.抽象方法4.abstract不能用来修饰属性、构造器、private、final、static
用户7886150
2021/04/07
9530
09(02)总结final,多态,抽象类,接口
(4)抽象类的练习 A:猫狗案例练习 B:老师案例练习 C:学生案例练习 D:员工案例练习 /* A: 猫狗案例 具体事物:猫,狗 共性:姓名,年龄,吃饭 分析:从具体到抽象 猫: 成员变量:姓名,年龄 构造方法:无参,带参 成员方法:吃饭(猫吃鱼) 狗: 成员变量:姓名,年龄 构造方法:无参,带参 成员方法:吃饭(狗吃肉) 因为有共性的内容,所以就提取了一个父类。动物。 但是又由于吃饭的内容不一样,所以吃饭的方法是抽象的, 而方法是抽象的类,类就必须定义为抽象类。
Java帮帮
2018/03/15
8720
【Java基础语法】抽象类和接口
在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
用户11288949
2024/09/24
950
【Java基础语法】抽象类和接口
利用实例巧妙区分“抽象方法”和“虚方法”!
最近在开发中,get到了虚方法这个名词,由于当时是在抽象类中用到,并且抽象方法和虚方法的使用有那么一丝丝的相近,之前也有了解过虚方法,但是对其概念比较模糊,所以今天在这里记录一下抽象方法和虚方法的区别。
灰小猿
2020/09/23
8500
利用实例巧妙区分“抽象方法”和“虚方法”!
抽象类 VS 接口
接口和抽象类是面向对象编程(OOP, Object Oriented programming)中两个绕不开的概念,二者相似而又有所不同。接下来,我们来了解二者的概念并比较它们的异同。
雪飞鸿
2018/09/05
4630
抽象类 VS 接口
C#进阶学习--虚方法(virtual)
我们看到,针对需求1和2,重写了Age属性与SayHello方法,在控制台调用SayHello方法,调用方法如下:
腾云大使
2022/01/11
8580
C#中抽象类与抽象方法的作用与实例
在C#中,允许把类和方法声明为抽象类与抽象方法,具体的声明方法是在类名或方法名前加上abstract关键字。 那么我们什么时候应该用抽象类呢? 如果一个类设计的目点是用来被其它类继承的,它代表一类对象的所具有的公共属性或方法,那个这个类就应该设置为抽象类。 抽象类与其它的类有什么区别呢? 抽象类是不能够被实例化的。如果一个类中包含有抽象方法,那么这个类一定要声明为抽象类。同时,抽象方法一定需要在子类中重写,让抽象方法成为一个具体的实实在在的方法。 比如,我们要声明一个动物类animal,然后有其它的类Cat(猫),Dog(狗)等具体的类来继承它,那么这个动物类就应该声明为抽象类。因为animal只是一个名词,不代表任何具体的对象,它只是代表所有动物所拥有的共同特征,所以animal类是根本不可能被实例化的。同时,如果所有动物都必须声明"叫"这样一个方法的话,那么,我们可以在animal类中声明一个抽象方法shout(),因为抽象方法是必须在子类中重写的,所以这就限制了所有继承自animal类都必须重写shout()方法。 实例: 声明Animal类
zls365
2020/08/19
1.9K0
C# OOP
(1). 封装:将一些行为以类为单位进行包裹起来,然后通过类进行调用(如People类),可以利用private、public、protected灵活控制属性的可访问性。
明志德道
2023/10/21
2180
C#  OOP
【Java SE】抽象类和接口
在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
xxxflower
2023/04/16
3030
【Java SE】抽象类和接口
《JavaSE-第十章》之抽象类与接口
前言 前面我们已经学了继承,在继承中我们会发现,子类重写了父类的方法,最终使用的子类的方法,而父类中方法的方法体没啥用,那么是否能把它剩略呢?另一个问题就是类不能多继承,子类的功能是不方便的扩展与维护
用户10517932
2023/10/07
3100
《JavaSE-第十章》之抽象类与接口
第十天 面向对象-继承抽象类【悟空教程】
第10天 面向对象 第1章 继承 1.1 继承概念 1.1.1 继承概述 继承是面向对象的核心特性,是面向对象的学习重点。同时继承是代码复用的重要方式,可以表示类与类之间的关系,是所有面向对象语言不可缺少的组成部分。 1.1.2 继承概念 当一个类的属性与行为均与现有类相似,属于现有类的一种时,这一个类可以定义为现有类的子类。 或者换成相反的角度来看,如果多个类具有相同的属性和行为,我们可以抽取出共性的内容定义父类,这时再创建相似的类时只要继承父类即可。 子类拥有父类的所有属性与方法,无需重新定义。并且可
Java帮帮
2018/06/11
7180
相关推荐
Python3 与 C# 面向对象之~继承与多态
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档