抽象类和接口

  1. final(不可变):

  • 被 final 修饰的变量不可以被改变,又被称为常量。

  • 被 final 修饰的方法不可以被重写。

  • 被 final 修饰的类不可以被继承。

  1. 抽象(现实中不存在的东西):

  • 在Java中:只声明,不实现。

  • 抽象方法:使用abstract来修饰,不可以有方法体,直接用 分号 ;结束

  • 抽象类:如果一个类中有抽象方法,这个类必须是一个抽象类。

特点
  • 抽象类不可以创建对象

  • 抽象类的子类,必须重写父类中的抽象方法。否则,子类必须也是抽象类。

通过抽象类可以强制的要求子类中必须有那些方法。

抽象类中可以有正常的方法。

抽象类的特点

  • 抽象类无法被其他类实例化,但可以拥有构造方法

抽象方法的特点:

  • 抽象方法无方法体,必须定义在抽象类中

抽象方法必须在子类中实现,除非子类也是抽象类

接口

  • 接口中的属性都是全局静态变量,自JDK1.8起,在接口中可以定义的方法包括抽象方法,静态方法和默认方法

  • 类只能继承一个父类,但可以实现多个接口。java通过实现接口可以达到多重继承的效果

  • 接口表示一种约定,也表示一种能力。接口体现了约定和实现相分离的原则。通过面向接口编程,可以降低代码间的耦合性,提高代码的可扩展性和可维护性

  1. 类与类的关系

  • 继承关系,只支持单继承

比如,A是子类 B是父类,A具备B所有的功能(除了父类的私有资源和构造方法)

  • 子类如果要修改原有功能,需要重写(方法签名与父类一致 + 权限修饰符>=父类修饰符)

  1. 类和接口的关系

  • 实现关系.可以单实现,也可以多实现

class A implements B,C{}
  • 其中A是实现类,B和C是接口,A拥有BC接口的所有功能,只是需要进行方法的重写,否则A就是抽象类

  1. 接口与接口的关系

  • 是继承关系,可以单继承,也可以多继承

interface A extends B,C{}
  • 其中ABC都是接口,A是子接口,具有BC接口的所有功能(抽象方法)

class X implements A{}
  • X实现类需要重写ABC接口的所有方法,否则就是抽象类

  • class A extends B implements C,D{}

  • 其中A是实现类,也是B的子类,同时拥有CD接口的所有功能

  • 这时A需要重写CD接口里的所有抽象方法

  1. 接口与抽象类的区别

  • 接口是一种用interface定义的类型

  • 抽象类是一种用class定义的类型

  • 接口中的方法都是抽象方法,还有默认方法与静态方法

  • 抽象类中的方法不做限制

  • 接口中的都是静态常量

  • 抽象类中可以写普通的成员变量

  • 接口没有构造方法,不可实例化

  • 抽象类有构造方法,但是也不可以实例化

  • 接口是先天设计的结果,抽象是后天重构的结果

  • 接口可以多继承

  • 抽象类只能单继承

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值