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

文章目录

  • 一、为什么使用抽象类和抽象方法?
    • 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.xdnf.cn/news/144341.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

代码随想录_刷题笔记_第二次

链表 — 环形链表 题目链接&#xff1a;142. 环形链表 II - 力扣&#xff08;LeetCode&#xff09; 题目要求&#xff1a; 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c…

计算机专业的就业方向

计算机专业的就业方向 亲爱的新生们&#xff0c;欢迎你们踏上计算机科学的旅程&#xff01;作为一名计算机专业的学生&#xff0c;你们即将进入一个充满无限可能的领域。今天&#xff0c;我将为大家介绍计算机专业的一些主要就业方向&#xff0c;帮助你们了解未来的职业选择。…

(黑马点评)二、短信登录功能实现

2.1 基于传统Session实现的短信登录及其校验 2.1.1 基于Session登录校验的流程设计 2.1.2 实现短信验证码发送功能 请求接口/user/code请求类型post请求参数phone返回值无 /*** 发送手机验证码*/PostMapping("/code")public Result sendCode(RequestParam("ph…

Ubunutu 的 Bash 没有颜色

终端没有颜色&#xff1a; 取消注释 force_color_promptyes &#xff1a; 这时候就有颜色了&#xff1a;

three.js shader 实现天空中白云

three.js shader 实现天空中白云 预览&#xff1a; https://threehub.cn/#/codeMirror?navigationThreeJS&classifyshader&idwhiteCloud 更多案例 可见 预览&#xff1a; https://threehub.cn import * as THREE from "three"; import { OrbitControls …

按摩上门预约小程序源码系统 在线评价+即时服务 带完整的安装代码包以及搭建部署教程

系统概述 按摩上门预约小程序源码系统是一款专为按摩行业量身定制的移动端应用解决方案。它利用先进的互联网技术&#xff0c;将传统按摩服务与线上平台相结合&#xff0c;实现了用户与服务商之间的无缝对接。该系统不仅简化了预约流程&#xff0c;提高了服务效率&#xff0c;…

【Python】探索 PluginBase:Python 插件系统的灵活构建

我承认这道菜有赌的成分&#xff0c;果然还是赌输了。 在现代软件开发中&#xff0c;插件系统为应用程序提供了极大的灵活性和扩展性。Python&#xff0c;作为一种流行的编程语言&#xff0c;拥有丰富的库和框架来支持插件的开发。今天&#xff0c;我们将深入探讨一个名为Plug…

23.面试题02.07链表相交

public class Solution {public ListNode getIntersectionNode(ListNode headA, ListNode headB) {ListNode apheadA;ListNode bpheadB;int lenA0,lenB0;//求两个链表长度while(ap!null){apap.next;lenA;}while(bp!null){bpbp.next;lenB;}apheadA;bpheadB;int len0;//用来计算让…

BAS模型论文阅读

论文全名&#xff1a;Background Activation Suppression for Weakly Supervised Object Localization and Semantic Segmentation 论文pdf下载地址&#xff1a;2309.12943 (arxiv.org) 论文会议版全名&#xff1a;Background Activation Suppression for Weakly Supervised O…

AI产品经理面试20个问题汇总(含面试解题技巧、注意事项)

这题我会&#xff01;这是一个包含AI产品经理问题的备考文章&#xff0c;本文主要讲解AI产品经理的备考注意事项、真题展示、解题技巧及高效刷题方法&#xff0c;相信大家看完就一定能掌握技巧并且顺利通关&#xff01; 一、AI产品经理面试问题展示(20道) 1. 请描述一下你过…

Parallels Desktop 20(Mac虚拟机) v20.0.0 for Mac 最新破解版(支持M系列)

Parallels Desktop 20 for Mac 正式发布&#xff0c;完全支持 macOS Sequoia 和 Windows 11 24H2&#xff0c;并且在企业版中引入了全新的管理门户。 据介绍&#xff0c;新版本针对 Windows、macOS 和 Linux 虚拟机进行了大量更新&#xff0c;最大的亮点是全新推出的 Parallels…

[Leetcode] 227.基本计算器

标题&#xff1a;[Leetcode] 227.基本计算器 个人主页&#xff1a;水墨不写bug &#xff08;图片来源于网络&#xff09; // _ooOoo_ // // o8888888o // // …

PCIe扫盲(五)

系列文章目录 PCIe扫盲&#xff08;一&#xff09; PCIe扫盲&#xff08;二&#xff09; PCIe扫盲&#xff08;三&#xff09; PCIe扫盲&#xff08;四&#xff09; PCIe扫盲&#xff08;五&#xff09; 文章目录 系列文章目录TLP Header详解&#xff08;一&#xff09;Byte En…

Linux系统编程入门 | 模拟实现 ls -l 命令

模拟实现代码 #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <pwd.h> #include <grp.h> #include <time.h> #include <string.h>int main(int argc, char* argv[]) {if (a…

为什么嫁人就要嫁公务员?稳定、收入高、福利好、资源多

在现代社会&#xff0c;择偶不仅仅是感情问题&#xff0c;更涉及到经济、社会地位和未来生活的方方面面。 对于很多女性来说&#xff0c;选择一个稳定、可靠的伴侣至关重要。而公务员作为一个备受尊敬的职业&#xff0c;成为了很多人心目中的理想对象。 那么&#xff0c;为什…

使用密钥文件登陆Linux服务器

假设A服务器为登陆目标,已经运行ssh服务。 B服务器作为登陆发起端。 登陆A服务器,账户S。 运行命令: ssh-keygen -t rsa 此时账户S家目录下会自动创建目录“.ssh”,目录下会有id_rsa和id_rsa.pub两个文件。 id_rsa为私钥,id_rsa.pub为公钥。 id_rsa文件内容下载到B服务…

web基础—dvwa靶场(七)SQL Injection

SQL Injection&#xff08;SQL注入&#xff09; SQL Injection&#xff08;SQL注入&#xff09;&#xff0c;是指攻击者通过注入恶意的SQL命令&#xff0c;破坏SQL查询语句的结构&#xff0c;从而达到执行恶意SQL语句的目的。SQL注入漏洞的危害是巨大的&#xff0c;常常会导致…

勒索软件和四重勒索策略:使用易备数据备份软件进行保护

文章内容&#xff1a; 1. 勒索行为类型 2. 勒索软件的演变&#xff1a;四重勒索 3. 遭遇勒索软件攻击时应遵循的准则 4. 防御勒索攻击的工具 5. 使用易备数据备份软件进行预防和备份 2024 年&#xff0c;勒索软件仍然是全球网络安全面临的最大威胁之一。威胁形势不断演变&#…

win11 下载安装MYSQL 5.7.30(保姆教程)

目录 一、下载安装包 二、安装 三、试一下 四、解决问题 1.如果出现“mysql不是内部或外部命令&#xff0c;也不是可运行的程序” 1.配置环境变量 2.重新打开cmd测试 一、下载安装包 进入下载链接&#xff1a;https://www.mysql.com/why-mysql/windows/https://www.mysq…

00898 互联网软件应用与开发自考复习题

资料来自互联网软件应用与开发大纲 南京航空航天大学 高纲4295和JSP 应用与开发技术(第 3 版) 马建红、李学相 清华大学出版社2019年 第一章 一、选择题 通过Internet发送请求消息和响应消息使用&#xff08;&#xff09;网络协议。 FTP B. TCP/IP C. HTTP D. DNS Web应…