Java基础___关于抽象类和接口读这一篇就够

抽象类
      使用了关键词abstract声明的类叫作“抽象类”。如果一个类里包含了一个或多个抽象方法,类就必须指定成abstract(抽象)。“抽象方法”,属于一种不完整的方法,只含有一个声明,没有方法主体

关于抽象类你需要知道的几点
      1.抽象类不能实例化一般都是new其子类的对象
      2.抽象类可以不含抽象方法,但抽象方法的只能存在于抽象类
      3.抽象类中含有抽象方法时,如果子类继承该抽象类,则必须重写该抽象方法
      4.抽象类可以有非抽象方法,并且可以不被子类重写
      5.允许(但不要求)抽象类包含抽象成员。
      6.抽象类含有非抽象方法,而且子类继承该类时,重写了该方法,那么该子类的对象调用该方法时,是子类中的方法;如果子类没有重写该父类中的非抽象方法,那么子类对象调用的是父类中的方法。

 

 

接口
      接口是一系列方法的声明,是一些方法特征的集合,接口用interface(接口)修饰。接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。

关于接口你需要知道的几点
      1.成员变量默认都是public,static,final类型的(都可省略),必须被显示初始化,即接口中的成员变量为常量
      2.方法默认都是public,abstract类型的(都可省略),没有方法体,不能被实例化
      3.只能包含public,static,final类型的成员变量和public,abstract类型的成员方法
      4.接口中没有构造方法,不能被实例化
      5.一个接口不能实现(implements)另一个接口,但它可以继承(extends)多个其它的接口,一个类(包括抽象类)只能继承一个直接的父类,但可以实现多个接口,间接的实现了多继承(类与接口直接可以多实现,接口与接口之间可以多继承
      注:接口为什么不能实现接口?  接口是用来声明方法的。实现一个接口,必须重写其声明的所有方法,但是接口中的方法都没有方法体,重写方法是没有意义的。所以接口不能用来实现接口。接口继承接口可以理解为方法的扩充。
      6.Java接口必须通过类来实现它的抽象方法,当这个类实现接口时,它必须实现接口中的所有抽象方法,否则这个类必须声明为抽象的类
      7.Java接口本身必须非常稳定,Java接口一旦制定,就不允许随意更加,否则对外面使用者及系统本身造成影响(接口中的方法都为抽象方法,更改一个接口它所有继承该接口的子接口或其实现类都必须更改)

 

抽象类和接口的对比以应用场景
      抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。比如,男人,女人,这两个类,他们的抽象类是人。说明,他们都是人。人可以吃东西,狗也可以吃东西,你可以把“吃东西”定义成一个接口,然后让这些类去实现它.一个类只能继承一个类(抽象类)(正如人不可能同时是生物类和非生物类),但是可以实现多个接口(吃饭接口、走路接口)。
      抽象类是对象的抽象,然而接口是一种行为规范。接口是抽象类的变体比抽象类更抽象,接口中所有的方法都是抽象的。而抽象类是声明方法的存在而不去实现它的类。
当你关注一个事物的本质的时候,用抽象类;当你关注一个操作的时候,用接口。抽象类的功能要远超过接口,但是,定义抽象类的代价高。因为高级语言来说(从实际设计上来说也是)每个类只能继承一个类。在这个类中,你必须继承或编写出其所有子类的所有共性。虽然接口在功能上会弱化许多,但是它只是针对一个动作的描述。而且你可以在一个类中同时实现多个接口。在设计阶段可以降低设计的难度。所以在实际开发中编写的接口多而很少去写抽象类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值