abstract class 和 interface 有什么区别

abstract class 和 interface 有什么区别

1.抽象类

抽象类:声明方法的存在而不实现的类,如果一个类中没有包含足够的信息来描绘一个具体的对象,它只能被继承,派生出子类,这样的父类就是抽象类。

1.1抽象类的格式

[public] abstract class 类名 [extends父类] [implements接口列表]
{
    //属性声明及初始化;
    //抽象方法的声明;
    //非抽象方法声明及方法体;
}

1.2抽象类注意事项

1.修饰抽象类的修饰符有public和默认修饰符两种;

2.抽象类中可以有抽象方法,也可以有非抽象的方法;

3.抽象方法是无方法体的方法。

4.定义抽象类时,要在关键字class的前面添加abstract。

5.抽象类不能被实例化;

6.其包含的抽象方法必须在其子类中被实现,否则该子类只能声明为abstract;

7.抽象方法不能为static;

8.在下列情况下,一个类必须声明为抽象类:

  1. 当一个类的一个或多个方法是抽象方法时;
  2. 当类是一个抽象类的子类,并且没有实现父类的所有抽象方法,即只实现部分;
  3. 当一个类实现一个接口,并且不能为全部抽象方法都提供实现时;

2.接口

由于类的多继承能够导致方法调用的冲突,所以Java中的类只能单继承。但是很多时候还是需要多继承的,Java中的接口就可以实现多继承,接口中不存在具体方法,不会引起方法调用的冲突。instanceof运算符可以用来决定某对象的类是否实现了接口

2.1接口的格式

[public] interface 接口名 [extends 父接口列表]{
     // 属性声明,不写也是公共常量
     [public] [static] [final] 属性类型属性名 = 常量值 ;
     // 方法声明
     [public] [abstract] 返回值类型方法名 ( 参数列表 ) ;
}

1.接口中只包含常量和抽象方法,而没有变量和方法的实现,接口对类来说是一套规范,是一套行为协议。
2.接口不是一个类,不能实例化。
3.接口规定了类的共同行为。
4.在Java中,接口的声明采用interface关键字,接口不是一个类,没有构造方法,不能被实例化。
5.修饰接口的修饰符只有public和默认修饰符两种,不写也是public的
6.接口可以是多继承,接口只能继承接口,不能继承类。
7.属性必须是常量(有初值),方法必须是抽象的(无方法体)。

2.2接口可以多继承

//B,C也是接口
public interface A extends B,C {
}

2.3接口的实现(implements)

如果一个类要实现一个接口,那么这个类就必须实现接口中所有抽象方法。否则这个类只能声明为抽象类,多个无关的类可以实现一个接口,一个类可以实现多个无关的接口,一个类可以在继承一个父类的同时,实现一个或多个接口。

class 类名 [extends 父类] [implements 接口列表]
{
 覆盖所有接口中定义的方法;
}

3.异同

相同:子类必须实现它门的抽象方法,抽象类与接口都不能创建自己的对象
不同:继承使用extends,接口的实现用implements
抽象类可以没有抽象方法,接口中方法都是抽象的
抽象类可以有自己构造器及普通方法,接口中没有构造器
子类只能继承一个抽象类,但可以实现多个接口
抽象类主要通过共享的属性,接口主要提供共享的方法

posted @   芊嵛  阅读(94)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
  1. 1 イエスタデイ(翻自 Official髭男dism) 茶泡饭,春茶,kobasolo
  2. 2 世间美好与你环环相扣 柏松
世间美好与你环环相扣 - 柏松
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 尹初七

作曲 : 柏松

编曲 : 彭圣杰

偏偏秉烛夜游

偏偏秉烛夜游

午夜星辰 似奔走之友

爱你每个结痂伤口

酿成的陈年烈酒

入喉尚算可口

入喉尚算可口

怎么泪水 还偶尔失守

邀你细看心中缺口

裂缝中留存 温柔

此时已莺飞草长 爱的人正在路上

此时已莺飞草长 爱的人正在路上

我知他风雨兼程 途经日暮不赏

穿越人海 只为与你相拥

此刻已皓月当空 爱的人手捧星光

我知他乘风破浪 去了黑暗一趟

感同身受 给你救赎热望

知道你不能 还要你感受

知道你不能 还要你感受

让星光加了一点彩虹

让樱花偷偷 吻你额头

让世间美好 与你环环相扣

此时已莺飞草长 爱的人正在路上

此时已莺飞草长 爱的人正在路上

我知他风雨兼程 途经日暮不赏

穿越人海 只为与你相拥

此刻已皓月当空 爱的人手捧星光

我知他乘风破浪 去了黑暗一趟

感同身受 给你救赎热望

此时已莺飞草长 爱的人正在路上

此时已莺飞草长 爱的人正在路上

我知他风雨兼程 途经日暮不赏

穿越人海 只为与你相拥

此刻已皓月当空 爱的人手捧星光

我知他乘风破浪 去了黑暗一趟

感同身受 给你救赎热望

知道你不能 还要你感受

知道你不能 还要你感受

让星光加了一点彩虹

当樱花开的纷纷扬扬

当世间美好 与你环环相扣

特别鸣谢:槿葵,我们的海报制作妹妹。

原唱:柏松

吉他:柏松

和声:柏松

录音:柏松

混音:张强

点击右上角即可分享
微信分享提示