《抽象类和接口的区别》

本文主要介绍了Java中抽象类和接口的相关知识。阐述了抽象类和抽象方法的概念、特点及使用规则,也说明了接口的概念、定义、实现和继承方式。对比了抽象类和接口的相同点与不同点,如二者都不能实例化,但在方法实现、构造器等方面存在差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

抽象类和接口的区别

开发工具与关键技术:MyEclipse 10、Java
作者:潘玉莹
撰写时间:2019-04-12

 抽象类的概念
在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法、初始化块和构造方法和普通类一样。
使用ababstract关键字来修饰的类称为抽象类
由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。
 抽象方法
抽象方法只包含一个方法名,而没有方法体,使用ababstract修饰
抽象方法要存在抽象中;抽象方法也可以存在接口中
 抽象类的总结
a) 抽象类必须使用abstract修饰符类修饰
b) 抽象方法也必须使用abstract修饰符来修饰
c) 抽象方法体不能有方法体
d) 抽象类不能被实例化,无法使用new关键字来调用抽象类的构造器创建抽象类的实例
e) 抽象类可以可以包含成员变量,方法(普通方法和抽象方法都可以)、构造器、初始化、内部类(接口、枚举)五种成分
f) 抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类
g) 抽象类的构造器不能用于创建实例,主要是用于被子类调用
h) Abstract、static不能同时修饰一个方法

 接口的概念
接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。
接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。
除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。
接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。
在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。
 接口的定义
a) 接口是隐式抽象的,当声明一个接口的时候,不必使用abstract关键字
b) 接口中每一个方法也是隐式抽象的,声明时同样不需要abstract关键字
c) 接口的方法都是公有的
d) 编译时自动为接口里定义的方法添加public abstract关键字
e) Java接口里的成员变量只能是public static final 共同修饰的,并且必须赋初值,可以不写public static final 会自动添加
 接口的实现
a) 当类实现接口的时候,类要实现接口中所有的方法。否则,类必须声明抽象类
b) 类使用implements关键字实现接口。在类声明中,implements关键字放在class声明后面
c) Java中类可以实现多个接口
 接口的继承
d) 一个接口可以继承另一个接口、和类之间的继承方式比较相似。接口的继承使用extends关键字、子接口继承父接口的方法,接口允许多继承
 抽象类和接口的相同点

  1. 抽象类和接口都不能被实例化
  2. 都是抽象的,接口是抽象方法的集合
  3. 同样具有abstract关键字修饰
     抽象类和接口的对比
    参数 抽象类 接口
    默认的方法实现 它可以有默认的方法实现 接口完全是抽象的,不存在方法的现实
    实现 子类使用extends关键字来继承抽象类,如果子类不是抽象类的话,它需要实现类中所有方法 类使用关键字impements来实现接口。它需要提供接口中所有声明的方法的实现
    构造器 抽象类可以有构造器 接口不能有构造器
    与正常JAVA类的区别 除了不能实例化抽象类之外,它和普通的JAVA没有任何区别 接口是完全不同的类型
    访问修饰符 抽象方法可以有pubic、protected和default这些修饰符 接口方法默认修饰符是public。你不可以使用其他修饰符
    Main方法 可以有main方法并且运行 接口没有main方法
    多继承 抽象类可以继承一个类和实现多个接口 接口只可以继承一个或多个其他接口
    添加新方法 如果你往抽象类中添加新的方法,你可以给它提供默认 如果你往接口中添加方法,那么你必须改变实现该接口的类。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值