当前位置:网站首页>抽象类和接口的区别
抽象类和接口的区别
2022-07-20 05:30:00 【活学编程思想】
抽象类
- 抽象方法——只有方法的声明,没有具体的实现。
- 抽象方法——必须用abstract关键字进行修饰。如果一个类含有抽象方法,则称这个类为抽象类,抽象类必须在类前用abstract关键字修饰。
- 因为抽象类中含有无具体实现的方法,所以不能用抽象类创建对象。
- 如果一个类不包含抽象方法,只是用abstract修饰的话也是抽象类。也就是说抽象类不一定必须含有抽象方法。
- 包含抽象方法的类称为抽象类,但并不意味着抽象类中只能有抽象方法,它和普通类一样,同样可以拥有成员变量和普通的成员方法。注意,抽象类和普通类的主要有三点区别:
- 抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。
- 抽象类不能用来创建对象;
- 如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。
接口
接口,英文称作interface,在软件工程中,接口泛指供别人调用的方法或者函数
- 接口中可以含有 变量和方法。但是要注意,接口中的变量会被隐式地指定为public static final变量(并且只能是public static final变量,用private修饰会报编译错误)
- 而方法会被隐式地指定为public abstract方法且只能是public abstract方法(用其他关键字,比如private、protected、static、final等修饰会报编译错误),并且接口中所有的方法不能有具体的实现,也就是说,接口中的方法必须都是抽象方法。从这里可以隐约看出接口和抽象类的区别,接口是一种极度抽象的类型,它比抽象类更加“抽象”,并且一般情况下不在接口中定义变量。
- 要让一个类遵循某组特地的接口需要使用implements关键字
- 可以看出,允许一个类遵循多个特定的接口。如果一个非抽象类遵循了某个接口,就必须实现该接口中的所有方法。对于遵循某个接口的抽象类,可以不实现该接口中的抽象方法。
抽象类和接口的区别
1.语法层面上的区别
- 抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法;
- 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;
- 接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;
- 一个类只能继承一个抽象类,而一个类却可以实现多个接口。
边栏推荐
- Cmake basic grammar and practical project analysis
- Graduation season -- use technology of various application scenarios
- 【学习笔记之菜Dog学C】数组
- 数组常用方法
- [dish of learning notes dog learning C] detailed array name
- B. Almost Ternary Matrix
- 一致性哈希,虚拟节点,布隆过滤器
- 虚拟DOM,和实际的DOM有何不同?
- Niuke bm6 judges whether there is a ring in the linked list
- 【学习笔记之菜Dog学C】详解操作符
猜你喜欢
【学习笔记之菜Dog学C】初识操作符和原码、反码、补码
冒泡排序/堆排序
Usage and examples of Apache Doris binlog load
[dish of learning notes, dog learning C] getting to know the pointer for the first time
Transform streams into data products
[note] logstash environment setup and installation configuration
RPC:Thrift框架
数组常用方法
Implementation of fruit and vegetable mall management system based on SSM
CV-Paper【1】:Deep Residual Learning for Image Recognition
随机推荐
Oracle实现limit效果:rownum的使用
虚拟DOM,和实际的DOM有何不同?
[scientific literature measurement] keyword mining and visualization
Graduation season -- use technology of various application scenarios
【学习笔记之菜Dog学C】函数
【学习笔记之菜Dog学C】if分支语句与switch分支语句
Call Win32 function in QT
OpenLayers 画圆画椭圆
谷粒学院使用nacos注册gateway网关时候报错503
背包问题(01背包/完全背包解释)
试题 B: 顺子日期
Basic syntax of symbol, iterator and generator in ES6
SIGIR‘22 推荐系统论文之对比学习篇
Websocket server code protocol analysis, learn to do their own protocol ideas.
CentOS下Apache Doris Oracle ODBC外表使用指南
How to realize file sharing access on computer in win10
【学习笔记之菜Dog学C】数组
[personal summary] end of July 17, 2022
J9 Digital Platform Theory: the possibilities and limitations of defi in the metauniverse
C语言写一个环形广告跑马灯或改为表白系统