×

抽象类的详解

前端技术网 前端技术网 发表于2023-12-20 01:45:07 浏览3163 评论0

抢沙发发表评论

一、接口和实现类的区别

接口(interface)和抽象类(abstract class)是支持抽象类定义的两种机制。

接口是公开的,不能有私有的方法或变量,接口中的所有方法都没有方法体,通过关键字interface实现。

抽象类的详解

抽象类是可以有私有方法或私有变量的,通过把类或者类中的方法声明为abstract来表示一个类是抽象类,被声明为抽象的方法不能包含方法体。子类实现方法必须含有相同的或者更低的访问级别(public->protected->private)。抽象类的子类为父类中所有抽象方法的具体实现,否则也是抽象类。

接口可以被看作是抽象类的变体,接口中所有的方法都是抽象的,可以通过接口来间接的实现多重继承。接口中的成员变量都是static final类型,由于抽象类可以包含部分方法的实现,所以,在一些场合下抽象类比接口更有优势。

相同点:

(1)都不能被实例化

(2)接口的实现类或抽象类的子类都只有实现了接口或抽象类中的方法后才能实例化。

不同点:

抽象类的详解

(1)接口只有定义,不能有方法的实现,java 1.8中可以定义default方法体,而抽象类可以有定义与实现,方法可在抽象类中实现。

(2)实现接口的关键字为implements,继承抽象类的关键字为extends。一个类可以实现多个接口,但一个类只能继承一个抽象类。所以,使用接口可以间接地实现多重继承。

(3)接口强调特定功能的实现,而抽象类强调所属关系。

(4)接口成员变量默认为public static final,必须赋初值,不能被修改;其所有的成员方法都是public、abstract的。抽象类中成员变量默认default,可在子类中被重新定义,也可被重新赋值;抽象方法被abstract修饰,不能被private、static、synchronized和native等修饰,必须以分号结尾,不带花括号。

(5)接口被用于常用的功能,便于日后维护和添加删除,而抽象类更倾向于充当公共类的角色,不适用于日后重新对立面的代码修改。功能需要累积时用抽象类,不需要累积时用接口。

二、C#深入详解的目录

第1章.NET基础体系结构

1.1什么是.NET

1.2我们为什么需要.NET技术

1.3什么是.NET Framework

1.4.NET和J2EE的相同点和不同点

1.5.NET和C#之间的关系

1.6 C#语言的特点

1.7 C#程序的编译运行

1.7.1什么是CLI

1.7.2什么是CLR

1.7.3什么是IL

1.7.4 C#程序是如何编译运行的

第2章 C#开发环境

2.1 C#语言需要的开发工具

2.2软件的安装、卸载

2.2.1安装Visual Studio 2005需要的软、硬件配置

2.2.2安装Visual Studio 2005需要的权限设置

2.2.3并行安装Visual Studio版本

2.2.4进行.NET Framework版本的并行安装

2.2.5安装IIS

2.2.6安装Visual Studio 2005

2.2.7卸载

2.3 Visual Studio 2005开发环境实际应用

2.3.1管理解决方案、项目和文件

2.3.1.1创建解决方案

2.3.1.2创建解决方案的目录

2.3.1.3更改或添加默认编辑器

2.3.1.4升级使用Visual Studio.NET2002或Visual Studio.NET2003创建的项目

2.3.1.5设置启动项目

2.3.1.6修改项目属性和配置设置

2.3.1.7添加新项目项

2.3.1.8**项目

2.3.1.9删除或移除项目

2.3.1.10卸载和重新加载项目

2.3.1.11移动项

2.3.1.12刷新解决方案资源管理器中的项

2.3.1.13如何重命名解决方案、项目和项

2.3.2项目属性

2.3.2.1指定程序集信息

2.3.2.2更改程序集名称

2.3.2.3更改应用程序的命名空间

2.3.2.4启用或禁用编译器警告

2.3.2.5更改应用程序的生成位置

2.3.2.6为项目生成XML文档

2.3.2.7设置编译常量

2.3.2.8针对特定的CPU类型优化应用程序

2.3.2.9在Visual Studio中添加或移除引用

2.3.2.10设置引用的Copy Local属性

2.3.2.11添加或移除字符串资源

2.3.2.12访问设置事件

2.3.2.13对应用程序和部署清单进行签名

2.3.2.14对程序集进行签名

2.3.2.15设置引用路径

2.3.2.16设置生成属性

2.3.2.17指定生成事件

2.3.3编辑代码和资源文件

2.3.3.1选择和更改文本

2.3.3.2显示代码大纲和隐藏代码

2.3.3.3在编辑器中管理自动换行

2.3.3.4在编辑器中显示行号

2.3.3.5在编辑器中将URL显示为链接

2.3.3.6以递增方式搜索文档

2.3.3.7交互式搜索

2.3.4生成、调试和测试

2.3.4.1启用/禁用实时调试

2.3.4.2设置简单断点

2.3.4.3启用SQL Server 2005调试

2.3.4.4更改应用程序调试的启动操作

2.3.4.5设置应用程序调试的启动选项

2.3.4.6启用远程调试

第3章编写第一个C#程序

3.1 C#程序的常规结构

3.2 Main()和命令行参数

3.2.1运用命令行参数

3.2.2使用foreach访问命令行参数

3.2.3 Main()返回值标识

3.3学习第一个C#程序

3.3.1编写第一个C#代码

3.3.2程序添加注释

3.3.3编译程序

第4章 C#程序设计之基础知识

4.1数据类型

4.1.1 C#的数据类型

4.1.2 C#值类型

4.1.2.1 C#值类型介绍——bool类型

4.1.2.2值类型介绍——byte类型

4.1.2.3值类型介绍——char类型

4.1.2.4值类型介绍——decimal类型

4.1.2.5值类型介绍——double类型

4.1.2.6值类型介绍——enum类型

4.1.2.7值类型介绍——float类型

4.1.2.8值类型介绍——int类型

4.1.2.9值类型介绍——long类型

4.1.2.10值类型介绍——**yte类型

4.1.2.11值类型介绍——short类型

4.1.2.12值类型介绍——struct类型

4.1.2.13值类型介绍——uint类型

4.1.2.14值类型介绍——ulong类型

4.1.2.15值类型介绍——ushort类型

4.1.3引用类型包括的内容

4.2语句

4.2.1 C#语言的语句类型

4.2.1.1选择语句——if-else定义及使用

4.2.1.2选择语句——switch定义及使用

4.2.1.3迭代语句——do定义及使用

4.2.1.4迭代语句——for定义及使用

4.2.1.5迭代语句——foreach定义及使用

4.2.1.6迭代语句——while定义及使用

4.2.1.7跳转语句——break定义及使用

4.2.1.8跳转语句——continue定义及使用

4.2.1.9跳转语句——goto定义及使用

4.2.1.10跳转语句——return定义及使用

4.2.1.11异常处理语句——throw定义及使用

4.2.1.12异常处理语句——try-catch定义及使用

4.2.1.13异常处理语句——try-finally定义及使用

4.2.1.14异常处理语句——try-catch-finally定义及使用

4.2.1.15检查处理语句——Checked定义及使用

4.2.1.16检查处理语句——unchecked定义及使用

4.2.1.17 Fixed语句定义及使用

4.2.1.18 lock语句定义及使用

4.3运算符

4.3.1 C#运算符定义

4.3.1.1 [ ]运算符定义和应用

4.3.1.2()运算符定义和应用

4.3.1.3(.)运算符定义和应用

4.3.1.4(::)运算符定义和应用

4.3.1.5+运算符定义和应用

4.3.1.6运算符定义和应用

4.3.1.7*运算符定义和应用

4.3.1.8/运算符定义和应用

4.3.1.9%运算符定义和应用

4.3.1.10&运算符定义和应用

4.3.1.11|运算符定义和应用

4.3.1.12 ^运算符定义和应用

4.3.1.13!运算符定义和应用

4.3.1.14~运算符定义和应用

4.3.1.15=运算符定义和应用

4.3.1.16<运算符定义和应用

4.3.1.17>运算符定义和应用

4.3.1.18?:运算符定义和应用

4.3.1.19++运算符定义和应用

4.3.1.20运算符定义和应用

4.3.1.21&&运算符定义和应用

4.3.1.22||运算符定义和应用

4.3.1.23<<运算符定义和应用

4.3.1.24>>运算符定义和应用

4.3.1.25==运算符定义和应用

4.3.1.26!=运算符定义和应用

4.3.1.27<=运算符定义和应用

4.3.1.28>=运算符定义和应用

4.3.1.29+=运算符定义和应用

4.3.1.30=运算符定义和应用

4.3.1.31*=运算符定义和应用

4.3.1.32/=运算符定义和应用

4.3.1.33%=运算符定义和应用

4.3.1.34&=运算符定义和应用

4.3.1.35|=运算符定义和应用

4.3.1.36 ^=运算符定义和应用

4.3.1.37<<=运算符定义和应用

4.3.1.38>>=运算符定义和应用

4.3.1.39->运算符定义和应用

4.3.1.40??运算符定义和应用

4.4数组

4.4.1数组的定义和标识

4.4.2一维数组的定义标识

4.4.3一维数组初始化

4.4.4多维数组的定义和标识

4.4.5多维数组的初始化

4.4.6交叉数组的定义和标识

4.4.7在数组使用foreach

4.4.8将一维数组作为参数传递

4.4.9将多维数组作为参数传递

4.4.10使用ref和out传递数组

4.5字符串

4.5.1字符串的定义和标识

4.5.2访问字符串的字符

4.5.3连接字符串

4.5.4字符串进行比较

4.5.5使用Split方法分析字符串

4.5.6使用字符串方法搜索字符串

4.5.7修改字符串内容

4.6命名空间

4.6.1命名空间的定义和标识

4.6.2访问命名空间

4.6.3使用命名空间别名

4.6.4使用命名空间来控制范围

4.7 C#预处理器指令

4.7.1 C#预处理的指令种类

4.7.2预定义指令——#if的定义和应用

4.7.3预定义指令——#else的定义和应用

4.7.4预定义指令——#elif的定义和应用

4.7.5预定义指令——#endif的定义和应用

4.7.6预定义指令——#define的定义和应用

4.7.7预定义指令——#undef的定义和应用

4.7.8预定义指令——#warning的定义和应用

4.7.9预定义指令——#error的定义和应用

4.7.10预定义指令——#line的定义和应用

4.7.11预定义指令——#region的定义和应用

4.7.12预定义指令——#endregion的定义和应用

4.7.13预定义指令——#pragme的定义和应用

4.7.14预定义指令——#pragmewarning的定义和应用

4.7.15预定义指令——#pragme checksum的定义和应用

第5章面向对象的程序设计思想

5.1面向对象的基本概念

5.1.1对象的概念

5.1.2面向对象技术的由来

5.2面向对象的模型技术

5.2.1对象模型技术

5.3面向对象的分析

5.3.1面向对象分析的概念

5.3.2面向对象分析的任务

5.3.3面向对象分析的层次

5.3.4面向对象分析的步骤

5.4面向对象的设计

5.4.1面向对象设计的概念

5.4.2面向对象设计阶段

5.4.3面向对象设计的几个步骤

第6章面向对象的C#语言

6.1类(class)

6.1.1类的概念

6.1.2类的标识

6.1.3类的特点

6.1.4使用类创建对象

6.1.5类的继承

6.1.6类的修饰符

6.1.7静态类

6.1.7.1静态类的概念

6.1.7.2静态类的特点

6.1.7.3使用静态类

6.1.8类的成员

6.1.8.1类成员的概念

6.1.8.2类的成员——this保留字的运用

6.1.8.3类的成员——静态成员的标识

6.1.8.4类的成员——静态成员和非静态成员的区分

6.1.8.5类的成员——成员常量

6.1.9构造函数

6.1.9.1构造函数的使用

6.1.9.2实例构造函数

6.1.9.3私有构造函数

6.1.9.4静态构造函数

6.1.9.5**构造函数

6.1.10析构函数

6.2方法

6.2.1方法的标识

6.2.2方法返回值

6.2.3方法中的参数类型

6.2.4静态和非静态的方法

6.3结构

6.3.1结构的标识

6.3.2结构的特点

6.3.3使用结构

6.3.4传递结构与传递类实例

6.4继承

6.4.1继承的概念

6.4.2继承的标识

6.4.3 base保留字的使用

6.4.4抽象类和密封类

6.4.5多态

6.5属性

6.5.1属性的概念

6.5.2接口属性的使用

6.5.3非对称访问器的使用

6.6事件

6.6.1事件的概念

6.6.2使用事件

6.6.3创建响应事件的控件

6.6.4接口中声明一个事件并类中实现该事件

6.6.5在Visual C#代码编辑器中创建事件处理程序

第7章深入了解C#

7.1接口

7.1.1接口的概念

7.1.2接口的标识

7.1.3显式接口的实现

7.1.4显式实现接口成员

7.2委托

7.2.1委托的概念

7.2.2委托的应用

7.2.3委托中命名方法的应用

7.2.4委托中匿名方法的应用

7.2.5使用委托而不使用接口

7.2.6合并委托

7.3索引器

7.3.1索引器的概念

7.3.2索引器的应用

7.3.3接口中使用索引器

7.3.4属性和索引器之间的不同点和相同点

7.4迭代器

7.4.1迭代器的概念

7.4.2迭代器的标识

7.4.3为整数列表创建迭代器块

7.4.4为泛型列表创建迭代器块

7.5线程

7.5.1线程的概念

7.5.2线程的应用

7.5.3应用线程进行同步

7.5.4创建和终止线程

7.5.5针对制造者线程和使用者线程进行同步

7.5.6使用线程池

7.6反射

7.6.1反射的概念

7.6.2反射的应用

……

三、java抽象类能不能加注解方式

抽象类是用来捕捉子类的通用特性的,是被用来创建继承层级里子类的模板。现实中有些父类中的方法确实没有必要写,因为各个子类中的这个方法肯定会有不同;而写成抽象类,这样看代码

php中什么是抽象方法和抽象类2020-07-29

抽象方法是指在类中定义的没有方法体的方法。如果一个类中有一个方法是抽象方法,那么这个类就是抽象类,抽象类中可以包含非抽象方法。在声明抽象方法和抽象类时,需要使用abstra

抽象类和接口有什么异同点2020-08-13

抽象类和接口的区别:(推荐教程:java入门教程)抽象类中既可以包含抽象方法,也可以包含非抽象的普通方法;而接口中的方法必须是抽象方法。抽象类中的抽象方法的访问类型可以是public

php中抽象类和接口有哪些不同点2020-11-05

php中抽象类和接口的不同点有:1、抽象类可以有属性和普通方法,接口不能有属性和普通方法;2、抽象类中不一定有抽象方法,接口中一定有抽象方法;3、抽象类的抽象方法必须用abstract

抽象类与接口有什么联系2020-08-03

联系:(推荐教程:java入门教程)1、都可以拥有抽象方法2、都不可以直接创建对象3、都依靠于子类存在才有意义,子类必须实现其所有的抽象方法4、都可以实现多态区别:成员不同:接口中没

php抽象类和接口之间有什么区别?2020-07-16

本篇文章给大家介绍一下php抽象类和接口的区别。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。抽象类官方描述请查看文档,下面是官方描述的梳理版本:定义为

详解PHP中abstract(抽象)、final(最终)和static(静态)原理与用法2020-07-14

本文实例讲述了PHP中abstract(抽象)、final(最终)和static(静态)原理与用法。分享给大家供大家参考,具体如下:abstract(抽象)PHP 5支持抽象类和抽象方法。定义为抽象的类不能

什么是java注解2020-08-05

注解和反射是Java中非常让人容易忽略的东西,但却很重要,在主流的Spring中更是充满了注解,注解和注释很像,两者其实本质就差不多,注释是给我们程序员看的,而注解呢其实就是给程序看

常见的Java注解有哪些2020-07-21

注解(Annotation)(推荐教程:java入门教程)从 JDK 5.0开始, Java增加了对元数据(MetaData)的支持,也就是Annotation(注解)Annotation其实就是代码里的特殊标记,这些标记可

C#中虚方法和抽象方法2020-07-23

今天在云和学院学了很多,我这次只能先总结一下C#中的虚方法和抽象的运用。理论:虚方法:用virtual修饰的方法叫做虚方法虚方法可以在子类中通过override关键字来重写常见的虚方

java代码编译顺序是什么2020-10-27

java代码编译顺序:首先源代码进入词法分析器,token流后进入语法分析器;然后进行抽象语法树后进行语义分析器;接着注解抽象语法树,并使用字节码生成器;最后生成jvm字节码。java代码

抽象数据类型有哪些2020-07-02

抽象数据类型是一种对“数据结构”的描述,这种描述是“抽象”的,描述内容有:1、数据对象集;2、与数据**相关联的操作集。抽象数据类型抽象数据类型(Abstract Data Type)是一种

工厂模式和抽象工厂模式的区别?2020-07-28

工厂模式和抽象工厂模式的区别?1、工厂模式在使用时可以随时设置变量,不用提前进行设置,抽象工厂模式则需要每次增加产品时,进行修改类方法;2、工厂模式可以使用两个接口以及三个

实例介绍java中的Calendar类2020-07-23

日历类,它是一个抽象类,封装了所有的日历字段值,通过统一的方法根据传入不同的日历字段可以获取值。(推荐教程:java入门教程)1、得到一个日历对象Calendar c= Calendar.getInstan

java和php接口的区别是什么2020-09-01

java和php接口的区别是:1、php中在接口中的抽象方法只能是public的,默认也是public权限;2、java中私有方法使用private修饰,供接口中的默认方法或者静态方法调用。【相关学习推

感谢您的阅读!希望本文对解决您关于抽象类的详解的问题有所帮助。如果您还有其他疑问,欢迎随时向我们提问。