Java--基础 面向对象特性之多态之二

抽象类
在一个类中,如果包含抽象方法,则该类为抽象类。
特点:
1.抽象类不能被实例化,不能在通过new创建其实例对象。
一个普通类继承了该抽象类,实例化子类的时候,可以通过super()来调用抽象类的构造函数。
2.抽象类中可以没有抽象方法,但是包含了抽象方法的类一定是抽象类。
3.一个普通类继承了抽象类,则该子类必须实现抽象类中的所有抽象方法。
4.如果继承了抽象类的子类也是一个抽象类,则不用实现父类的抽象方法。
5.没有抽象的构造方法,也没有抽象的静态static方法。
6.抽象类中可以包含非抽象的构造方法,创建子类实例对象时可以调用。

由抽象类可以衍生出一个非常重要的概念:接口,面向接口编程是常见的一种开发方式。

面向接口编程就是将程序的业务逻辑提取出来,以接口的形式去对接不同的业务模块,接口只串联不实现。
真正的业务逻辑交给接口的实现类来完成,当用户需求发生变更时,只需切换不同的实现类即可。

低耦合:降低模块之间的链接的紧密程度,模块之间是一种非常松散的状态,利于维护和扩展。
高内聚:将相关的业务逻辑尽量集中到一个模块中。

面向接口编程的优点:(低耦合)
1.能够最大限度的解耦,降低程序的耦合性。
2.使用程序易于扩展。
3.有利于程序的后期维护。

如何定义接口
接口是Java中独立存在的一种结构,类似于类,使用接口,首先需要创建一个接口文件,Java中用class来标示类,用interface来标示接口。

基本语法:
public interface 接口名{
public abstract 返回值 方法名(参数列表);
}

接口中不能有普通方法,全部是抽象方法,因为接口中全部都是抽象方法,所以每一个方法的abstract关键字都可以省略。
定义接口时的abstract关键字和接口中方法的abstarct关键字都可以省略,一般在开发中,都是省略的状态。

接口与抽象类对比:
接口其实就是一个极度抽象的抽象类,
抽象类中可以包含非抽象方法,抽象类中也可以没有抽象方法,
接口中不能有任何非抽象方法的存在,接口中的方法必须全部是抽象方法,到达了一种极致,所以可以称为极度抽象的抽象类。
抽象类可以被普通类继承,接口只能被接口继承。
抽象类可以实现接口,同时不去实现接口的抽象方法。
抽象类不能继承接口。
接口可以继承接口,接口不能实现接口。

接口中可以定义成员变量,但是有要求如下:
1.不能定义private和protected修饰的成员变量,只能定义public和默认修饰的成员变量。
2.接口中的成员变量在定义时必须被初始化。
3.接口中的成员变量必须是静态static,同时该成员还必须是一个常量,即可以直接通过接口访问,同时值不能被修改。
public static final 修饰 必须赋初始值

如何使用接口
因为接口不能被实例化,它描述的是抽象的信息,抽象的信息一定是没有实例,我们需要实例化的是接口的实现类。
什么是实现类?
实现类就是对接口的抽象方法进行具体实现的一个类,实现类就是一个普通的Java类,创建实现类的基本语法:
public class 实现类名 implements 接口名{
//实现接口的抽象方法
public 返回值 方法名(参数列表){

}

}

可以将实现类的实例对象赋给接口的引用,是多态的另外一种表现实现(子类的实例对象赋给父类 自动转换)。
多态的基础是父子类和接口实现类(继承和重写)。

继承只能完成单继承,接口可以多实现,
接口实际就是用来描述功能的,但是不实现功能,
可以让某个类实现一个接口,就可以理解为该类具备了某个功能,一个类可以同时具备多个功能。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值