当前位置:网站首页>接口和抽象
接口和抽象
2022-08-03 04:43:00 【lbsjdxsn】
抽象方法:
如果一个方法,不需要实现体(函数内容),就可以声明抽象方法
抽象方法:没有方法体的方法。java中使用abstract关键字声明的方法就是抽象方法。
访问修饰符 abstract 返回值类型 方法名称(参数列表);
抽象方法必须定义在抽象类中。
注意:抽象类中不一定有抽象方法!
如果一个类继承了抽象类,就必须实现该类的抽象方法!
如果一定不实现,则将这个子类继续声明抽象类。
抽象类:
被abstract关键字修饰的类。
细节问题
1、抽象类一定是个父类?
是的,因为不断抽取而来的。
2、抽象类是否有构造函数?
有,虽然不能给自己的对象初始化,但是可以给自己的子类对象初始化。
抽象类和一般类的异同点:
相同:
- 它们都是用来描述事物的。
- 它们之中都可以定义属性和行为。
不同:
- 一般类可以具体的描述事物。抽象类描述事物的信息不具体
- 抽象类中可以多定义一个成员:抽象函数。
- 一般类可以创建对象,而抽象类不能创建对象。
3、抽象类中是否可以不定义抽象方法?
是可以的,那这个抽象类的存在到底有什么意义呢?仅仅是不让该类创建对象。
4、抽象关键字abstract不可以和哪些关键字共存?
- final:fianl修饰的类是无法被继承的,而abstract修饰的类一定要有子类.final修饰的方法无法被覆盖,但是abstract修饰的方法必须要被子类去实现的。
- static:静态修饰的方法属于类的,它存在与静态区中,和对象就没关系了。而抽象方法没有 方法体,使用类名调用它没有任何意义。
- private:私有的方法子类是无法继承到的,也不存在覆盖,而abstract和private一起使用修饰方法,abstract既要子类去实现这个方法,而private修饰子类根本无法得到父类这个方法。互相矛盾
接口:
接口,本质是特殊的类,特殊抽象类
接口中所有方法都是没有实现的(抽象方法)。
在jdk8之前:
接口中的所有属性和方法,默认都是public的!即便是你没有使用public关键字修饰。
java中使用interface关键字来定义接口
java中,接口可以多实现。
接口的实现使用implements关键字实现接口
子类一旦实现了接口,必须要实现接口所有的抽象方法,如果不想实现,则必须将该子类声明为抽象类。
接口也无法直接实例化,必须使用子类,以多态的形式完成实例化。
注意:接口可以多实现!
- 类继承类同时实现接口
class Fu{
public void show(){
}
}
interface Inter{
public void show1();
}
class Zi extends Fu implements Inter{
public void show1(){
}
}
- 接口多继承
interface A{
void show();
}
interface B{
void show1();
}
interface C{
void show2();
}
interface D extends A,B,C{
void show3();
}
- 没有抽象方法的抽象类的由来
interface Inter{
void show();
void show1();
void show2();
oid show3();
}
abstract class AbsInter implements Inter{
public void show(){
}
public void show1(){
}
public void show2(){
}
public void show3(){
}
}
/* //此类直接实现Inter,但只使用其他show和show2方法,这样导致其他两个方法也要实现 //不符合我们的要求 class SubInter2 implements Inter{ public void show() { System.out.println("show"); } public void show1() { } public void show2() { System.out.println("show2"); } public void show3() { } } */
jdk8的接口新特性:
允许接口存在默认方法和静态方法,非抽象方法
接口与抽象类的区别
相同点:
- 都位于继承的顶端,用于被其他实现或继承;
- 都不能实例化;
- 都包含抽象方法,其子类都必须覆写这些抽象方法;
区别:
- 抽象类为部分方法提供实现,避免子类重复实现这些方法,提供代码重用性;接口只能包含抽象方法;
- 一个类只能继承一个直接父类(可能是抽象类),却可以实现多个接口;(接口弥补了Java的单继承)
二者的选用:
- 优先选用接口,尽量少用抽象类;
- 需要定义子类的行为,又要为子类提供共性功能时才选用抽象类
边栏推荐
- BIOTIN ALKYNE CAS:773888-45-2价格,供应商
- Two ways to simulate multi-user login in Jmeter
- 2022 Henan Mengxin League Game (4): Zhengzhou University of Light Industry E - Sleep Well
- 【Harmony OS】【ARK UI】ETS 上下文基本操作
- typescript45-接口之间的兼容性
- Test drive: project management module - curd development project
- 13.机器学习基础:数据预处理与特征工程
- WebSocket的实际应用
- Windows 安装PostgreSQL
- DDL操作数据库、表、列
猜你喜欢
DFS's complement to pruning
Secondary development of WinForm controls
Harmony OS Date ano UI 】 【 】 the basic operation
荧光标记多肽FITC/AMC/FAM/Rhodamine/TAMRA/Cy3/Cy5/Cy7-Peptide
数字化时代,企业如何建立自身的云平台与商业模式的选择?
Modified BiotinDIAZO-Biotin-PEG3-DBCO|diazo-biotin-tripolyethylene glycol-diphenylcyclooctyne
刚上线就狂吸70W粉,新型商业模式“分享购”来了,你知道吗?
GIS数据漫谈(五)— 地理坐标系统
【HMS core】【Ads Kit】Huawei Advertising——Overseas applications are tested in China. Official advertisements cannot be displayed
redis键值出现 xacxedx00x05tx00&的解决方法
随机推荐
【软件工程之美 - 专栏笔记】35 | 版本发布:软件上线只是新的开始
MySQL 入门:Case 语句很好用
MySql 创建索引
8.电影评论分类:二分类问题
荧光标记多肽FITC/AMC/FAM/Rhodamine/TAMRA/Cy3/Cy5/Cy7-Peptide
UV 裂解的生物素-PEG2-叠氮|CAS:1192802-98-4生物素接头
传统企业如何转型社交电商,泰山众筹的玩法有哪些?
自组织是管理者和成员的双向奔赴
接口测试实战| GET/POST 请求区别详解
接口测试如何准备测试数据
Two ways to simulate multi-user login in Jmeter
接口测试 Mock 实战(二) | 结合 jq 完成批量化的手工 Mock
7.Keras开发简介
The flink sql task is changed, and after adding several fields to the sql, an error occurs when restoring from the previously saved savepoint.
Can Oracle EMCC be installed independently?Or does it have to be installed on the database server?
三丁基-巯基膦烷「tBuBrettPhos Pd(allyl)」OTf),1798782-17-8
DDL操作数据库、表、列
Interface testing framework of actual combat (2) | interface request assertion
mysql bool盲注
刚上线就狂吸70W粉,新型商业模式“分享购”来了,你知道吗?