C#和数据库高级:抽象类和抽象方法

news/2024/11/15 0:46:25/

文章目录

  • 一、为什么使用抽象类和抽象方法?
    • 1.1、父类与子类的相互转换
  • 二、抽象类和抽象方法
    • 2.1、抽象类的定义和方法声明规范
    • 2.2、使用继承多态的机制解决问题
  • 三、抽象类的概念和使用特点
  • 总结

一、为什么使用抽象类和抽象方法?

1.1、父类与子类的相互转换

1、给Cat和Dog类分别添加hava的方法
在这里插入图片描述

 class Cat : Animal{#regionpublic Cat(string name, string color, string kind, string favorite): base(name, color, kind){this.Favorite = favorite;}#endregion//吃饭public override void Have(){Console.WriteLine("我们要吃香喷喷的烤鱼啦!");}}class Dog : Animal{#regionpublic Dog(string name, string color, string kind, string favorite): base(name, color, kind){this.Favorite = favorite;}#endregion//吃饭public override void Have(){Console.WriteLine("我们要吃香喷喷的排骨啦!");}}

2、实现父类的子类转化。
父类类型可以添加子类对象,子类自动转化成父类类型,但是在取值的时候,必须判断是哪一个子类的对象,父类类型的对象必须强制转换成子类对象,因为父类无法调用子类的方法。
在这里插入图片描述
由于父类不能调用子类的方法,所以这种方法非常的麻烦,所以我们可以使用抽象类和抽象方法,来解决这种问题。

二、抽象类和抽象方法

2.1、抽象类的定义和方法声明规范

在这里插入图片描述

2.2、使用继承多态的机制解决问题

在这里插入图片描述

    {//创建一只狗和一只猫Cat objCat = new Cat("球球儿", "黄色", "小花猫", "小鱼");Dog objDog = new Dog("棒棒", "黑色", "小黑狗", "排骨");//将子类对象添加的父类集合List<Animal> list = new List<Animal>();list.Add(objCat);list.Add(objDog);//取出子类对象foreach (Animal obj in list){obj.Have();}Console.ReadLine();}

三、抽象类的概念和使用特点

  • 使用关键字abstract修饰的类,称为为抽象类。
  • 抽象类只是用来列举一个类所具有的行为,不能单独通过创建对象来使用,如Animalanimal=newAnimal0),这种实例化抽奖类的行为是错误的。
  • 抽象类中可以有抽象方法,也可以没有任何抽象方法。
  • 抽象类不能是静态的(static)或密封的(sealed)。
  • 抽象方法必须在抽象类中定义,不能在普通类中使用。
  • 抽象方法只是一个方法的声明,不能有任何方法体。
  • 抽象方法仅仅表示一个应该具有的行为,具体实现由其子类实现。
  • 抽象方法在子类中被实现(重写)必须使用关键字override子类必须重写父类的所有抽象方法,除非子类本身也是抽象类,

总结

抽象类不能实例化,不能是静态方法,子类必须重写,不能有方法体。


http://www.ppmy.cn/news/1527915.html

相关文章

二十种编程语言庆祝中秋节

二十种编程语言庆祝中秋节 文章目录 二十种编程语言庆祝中秋节中秋快乐&#xff01;家人们 &#x1f973;一 Python二 C三 C四 Java五 C#六 Perl七 Go八 Asp九 PHP十 JavaScript十一 JavaScript HTML十二 Visual Basic十三 早期 VB十四 Visual C十五 Delphi十六 Shell十七 Cobo…

在设计开发中,如何提高网站的用户体验?

在网站设计开发中&#xff0c;提高用户体验是至关重要的。良好的用户体验不仅能提升用户的满意度和忠诚度&#xff0c;还能增加转化率和用户留存率。以下是一些有效的方法和策略&#xff1a; 优化页面加载速度 减少HTTP请求&#xff1a;合并CSS和JavaScript文件以减少HTTP请求…

人工智能——猴子摘香蕉问题

一、实验目的 求解猴子摘香蕉问题&#xff0c;根据猴子不同的位置&#xff0c;求解猴子的移动范围&#xff0c;求解对应的过程&#xff0c;针对不同的目标状态进行求解。 二、实验内容 根据场景有猴子、箱子、香蕉&#xff0c;香蕉挂天花板上。定义多种谓词描述位置、状态等…

深度学习中常见的损失函数

在机器学习和深度学习中&#xff0c;损失函数用于衡量模型预测值与真实值之间的差异。根据任务的类型&#xff08;如回归、分类等&#xff09;&#xff0c;可以使用不同的损失函数。下面列举了一些常见的损失函数&#xff1a; 1. 回归问题中的损失函数 回归任务的目标是预测连…

信息安全数学基础(9)素数的算数基本定理

前言 在信息安全数学基础中&#xff0c;素数的算数基本定理&#xff08;也称为唯一分解定理或算术基本定理&#xff09;是一个极其重要的定理&#xff0c;它描述了正整数如何唯一地分解为素数的乘积。这个定理不仅是数论的基础&#xff0c;也是许多密码学算法&#xff08;如RSA…

微信小程序开发第五课

一 vant-app # https://vant-contrib.gitee.io/vant-weapp/#/home1.1 集成步骤 # 0 必须使用专门为小程序提供的npm包&#xff0c;通常好多包用不了&#xff0c;比如第三方包用了dom&#xff0c;小程序没有 https://developers.weixin.qq.com/miniprogram/dev/devtools/npm.h…

超详细PS2019安装教程与安装步骤图文解析!保姆级教程!(附赠PS下载地址)

步骤1&#xff1a;下载Adobe Photoshop PS CC 2023下载链接&#xff1a;https://pan.quark.cn/s/f997e116f327 下载完成后&#xff0c;解压文件到当前文件夹&#xff08;随便用什么解压软件都行&#xff0c;现在解压软件都是免费的&#xff0c;没有的到360官网下载360压缩&am…

Verilog学习之旅~

记录Verilog的学习日常~ 第一阶段&#xff1a;牛客网刷题 1.Verilog快速入门 基础语法 VL1:四选一多路器&#xff1a;case语句、条件表达符&#xff1b; VL2:异步复位的串联T触发器:T触发器的基本功能及代码实现、异步复位的概念&#xff1b; VL3:奇偶校验&#xff1a;缩…