C#中抽象类与抽象方法的详解

article/2025/10/16 17:53:06

前言:在上一篇博文关于重写的前提说明中提到了,那么今天我们一起来看看抽象类以及抽象方法…,首先我们顺着目录从抽象类的介绍开始学习:

目录:

  • 一.抽象类:
    • 1.声明形式(创建抽象类):
    • 2.抽象类的调用:
  • 二.抽象类的规则:
  • 三.抽象方法:
  • 四.应用举例:
  • 五.抽象类的运用意义;
  • 六.总结:

一.抽象类:

抽象类:往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象,在面向对象的C#编程语言中,通常用abstract来进行声明它是一个抽象类;

1.声明形式(创建抽象类):

 访问修饰符 abstract class abstract_name{}

举例,我们创建一个父类,它拥有一个方法:

 abstract class Father//抽象类关键字abstract{public void Run(){Console.WriteLine("我是抽象类我会跑,也会跳");}}

谨记:在抽象方法声明中不能使用staticvirtual修饰符!!!
原因请看图:
在这里插入图片描述
在这里插入图片描述

2.抽象类的调用:

 abstract class Father//抽象类关键字abstract{public void Run(){Console.WriteLine("我是抽象的父类我会跑,也会跳");}}class Son:Father//继承抽象类{}class Program{static void Main(string[] args){Son son = new Son();son.Run();Console.ReadLine();}}

运行结果:
在这里插入图片描述
也许会有小伙伴会疑惑为什么不去实例化这个名为"Father"的抽象类呢?下面我们来说说抽象类的规则:

二.抽象类的规则:

1. 不能创建一个抽象类的实例:

 Father father = new Father();

如果我们这样写是错误的,为什么呢,来看看:
在这里插入图片描述
2. 不能在一个抽象类外部声明一个抽象方法:
在这里插入图片描述
3.不能用sealed关键字来修饰抽象类:
通过在类定义前面放置关键字 sealed,可以将类声明为密封类。当一个类被声明为 sealed 时,它不能被继承。抽象类不能被声明为 sealed。不能用 sealed 修饰符修饰抽象类,因为这两个修饰符的含义是相反的。 采用 sealed 修饰符的类无法继承,而 abstract 修饰符要求对类进行继承:
在这里插入图片描述
4.抽象类中可以声明正常函数:
在这里插入图片描述

三.抽象方法:

抽象方法只允许在抽象类中进行声明!
举例:

 abstract class Father//抽象类关键字abstract{public abstract  int Abb();//方法}

在抽象类中进行声明后,必须在子类的继承中进行override,否则就会报错!!,同理属性也是如此!!
在这里插入图片描述

四.应用举例:

完整举例代码:

 abstract class Father//抽象类关键字abstract{public void Run(){Console.WriteLine("我是抽象的父类我会跑,也会跳");}public abstract  int Abb();//方法public abstract int  SS{ get; }//属性}class Son :Father{public override int SS{get { return 1; }}public void Jump(int a){Console.WriteLine("我是第{0}个子类",a);}public override int Abb(){Console.WriteLine("我是第{0}抽象方法",SS);return (1);}}class Program{static void Main(string[] args){Son son = new Son();son.Run();son.Abb();son.Jump(1);Console.ReadLine();}}

运行结果:
在这里插入图片描述

五.抽象类的运用意义;

在面向对象方法中,抽象类主要用来进行类型隐藏。构造出一个固定的一组行为的抽象描述,但是这组行为却能够有任意个可能的具体实现方式。这个抽象描述就是抽象类,而这一组任意个可能的具体实现则表现为所有可能的派生类;

六.总结:

1. 抽象类中的抽象属性和抽象方法必须是公有的,因此必须有public修饰符;
2. 子类必须override抽象类中的所有抽象属性和抽象方法,如果没有全部override,那么子类必须是抽象类;
3. 抽象类中可以有非抽象属性和非抽象方法,也可以是私有或者公有,但是如果是私有的话子类就不能访问,无意义,所以一般情况下都设置为公有public访问修饰符;
4. 有抽象方法或抽象属性的类一定是抽象类,抽象类中的属性或方法不一定都是抽象的;
5. 对抽象类不能使用new关键字,也不能被密封,原因是抽象类不能被实例化,不能被密封,因为抽象类要求对类进行继承;
6. 抽象类应主要用于关系密切的对象;
7.从抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实现;


http://chatgpt.dhexx.cn/article/x2OKV7ww.shtml

相关文章

java的抽象方法和抽象类

一个方法,要么是抽象方法,要么必须给出方法的具体实现。 比如我有个animal类,有个吃东西方法,我不希望在animal类中给出这个方法的具体实现,因为不同动物,吃的东西不一样。所以要给这个方法声明为抽象方法…

Java抽象类/抽象方法定义及其特性详解

类的继承结构中,越往上的类越具有通用性,也就越抽象。当它抽象到一定程度,就变成概念成框架,不能再产生实例化的对象了。例如“交通工具”,就无法用它来产生一个实例。 对应这一现象,Java中提供了抽…

Java的抽象类和抽象方法

目录 1、抽象类 2、抽象方法: 3、 抽象类和抽象方法的使用 1、抽象类 当父类的方法不能确定时,可以用abstract关键字来修饰方法,这个方法时抽象方法,用abstract来修饰该类就是抽象类。 public abstract class Animal {public…

抽象类必须要有抽象方法吗?

答案是:不必须。 这个题目主要是考察对抽象类的理解。 说一下我个人的理解吧。 1.如果一个类使用了abstract关键字修饰,那么这个类就是一个抽象类。 2.抽象类可以没有抽象方法 3.一个类如果包含抽象方法,那么这个类必须是抽象类&#xf…

抽象类和抽象方法定义及讲解?

首先说抽象类: (1)抽象类只能作为其他类的基类,它不能直接实例化,对抽象类不能使用new 操作符。 (2)抽象类中可以包含抽象成员,但非抽象类中不可以。 (3)如…

抽象类是不是必须要有抽象方法

在回答这个问题之前,先来了解一下抽象类。 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的…

Java中的抽象方法

在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。 抽象类除了不能实例化对象之外&#xf…

抽象方法(abstract);

抽象方法(abstract); 首先这个名字看着就很抽象。 首先java中普通的方法由方法的声明,方法体,(大括号里面的)组成 修饰符,返回值而,方法名称,(参…

抽象类+抽象方法

一、概念 1、抽象类:(用abstract修饰) Java中可以定义没有方法体的方法,该方法由子类来具体实现。该没有方法体的方法我们称之为抽象方法,含有抽象方法的类我们称之为抽象类。 2、抽象方法 (用abstract修…

Java中的抽象方法是什么,怎么用?

抽象方法… 听着就很抽象的样子 脑中不禁浮现出了各种抽象画的图像 缩在被窝里打起了退堂鼓 但是! Java中的抽象没那么难 抽象方法是个啥? 通俗来说 就是不知道该咋做的方法 先别晕 我给你举个小栗子 我们创建一个类,什么类呢?…

抽象类和抽象方法(Java)

抽象类和抽象方法(Java) 文章目录 抽象类和抽象方法(Java)介绍定义格式注意事项练习 介绍 抽象方法:将共性的行为(方法)抽取到父类之后,由于每一个子类执行的内容是不一样&#xff…

什么是抽象方法

前言:在读这篇文章的同学大概率是一位初学者,这一阶段应该是javase最困难的时候(多态性以及面向接口编程),也是最重要的时候。提前祝大家把这该死的java学完!!!(本文不会…

python 凸优化

定义函数,存在多个局部极小值,建议在局部优化之前进行全局优化,缩小范围 def fm(p):x, y preturn (np.sin(x) 0.05 * x ** 2 np.sin(y) 0.05 * y ** 2) x np.linspace(-10, 10, 50) y np.linspace(-10, 10, 50) X, Y np.meshgrid(x, y…

凸优化概述

目录 凸优化概述 1 概述 2 凸集 3 凸方法 3.1 凸性的一阶条件 3.2 凸性的二阶条件 3.3 詹森不等式 3.4 分段集 4 凸优化问题 凸优化概述 1 概述 也就是说,给定一个函数,我们想找到使最小化(或最大化)。目前已有的方法包含:最小二乘…

凸优化入门

主要的目录 1-2:推荐书目,引言,常见例子,优化问题分类,发展史 3-4:仿射/凸/凸锥 集/组合/包 5-6:几种重要的凸集:超平面与半空间/球和椭球/多面体/单纯形/对称(半)(正定)矩阵 7-8:…

凸优化系列——最优化问题

1. 凸优化问题介绍 凸优化问题如下: 为什么要求不等式约束是线性函数呢?我们知道凸函数的下水平集是凸集。 为什么要求等式约束是线性的呢?线性函数表示一个超平面,他也是凸集 也就是说,对于凸优化问题,…

凸优化 (中科大

凸优化是优化中比较容易的一种 优化optimization,即数学规划。 优化规划 优化:(包含三个要素)可行解的集合、定义最优、找出 任何一个优化问题,总可以写成这样的形式: minimize 函数 ,最…

凸优化学习

”凸优化“ 是指一种比较特殊的优化,是指求取最小值的目标函数为凸函数的一类优化问题。凸优化就是:1、在最小化(最大化)的要求下,2、目标函数是一个凸函数(凹函数),3、同时约束条件…

理解凸优化

导言 凸优化(convex optimization)是最优化问题中非常重要的一类,也是被研究的很透彻的一类。对于机器学 习来说,如果要优化的问题被证明是凸优化问题,则说明此问题可以被比较好的解决。在本文中,SIGAI将为…

优化算法——凸优化的概述

一、引言 在机器学习问题中,很多的算法归根到底就是在求解一个优化问题,然而我们的现实生活中也存在着很多的优化问题,例如道路上最优路径的选择,商品买卖中的最大利润的获取这些都是最优化的典型例子,前面也陆续地有一…