接口与多态

一、接口
1.接口的介绍
java中的类与类之间的关系是继承的关系,但是只能单继承。局限性很大
java提供了一种机制:接口    接口可以打破单继承的局限性
继承是属于子父类的关系,而接口与类是于实现的关系
接口和类是实现的关系,而且可以多实现。
   子类可以在继承一个父类的同时,再去实现多个接口
2.接口中的成员特点
成员变量:
只能有常量,而且是公共的静态的最终的常量。只能显示初始化赋值
public static final xxx;
成员方法:
只能有抽象方法(JDK1.7及以前的版本)
     public abstract  返回值类型  类名(参数列表);
构造方法:
没有构造方法
     不能用接口直接去创建对象
3.接口和类之间的关系
类与类之间的关系:继承的关系。单继承,可以多层继承   extends
类与接口之间的关系:实现的关系。可以多实现,还可以继承一个类的同时,
再去实现多个接口   implements
接口与接口之间的关系:继承的关系。多继承,也可以多层继承。
/*
4.接口的设计思想
完成的是特性的功能
还可以起到一些约束性的作用
  */
5.接口的优点
降低了程序之间的耦合性
打破了单继承的局限性
还可以起到一些约束性的规范
6.抽象类和接口的区别
相同点:
接口和抽象类都不能创建对象
接口和抽象类都是一个向上抽取的过程
不同点:
关系区别:
类与(抽象)类之间的关系:继承的关系
类与接口之间的关系:实现的关系
成员区别:
成员变量:
接口:只能有常量
抽象类:既可以变量,也可以有常量
成员方法:
接口:只能有抽象方法(JDK1.7版本及以前)
抽象类:即可以有抽象方法,也可以有普通方法
构造方法:
接口:没有构造方法
抽象类:有构造方法
设计思想区别:
抽象类完成的是一些共性的功能
接口完成的是一些特性中的共性功能
7.设计模式
适配器设计模式:
有一个接口,接口中有很多个抽象方法。
这个时候有一个功能类,它需要用到接口中的某一小部分的方法。但是如
        果让功能类直接去实现接口,那么就要重写所有的抽象方法。
需要用到的方法可以重写功能,但是用不到的方法,也需要空实现。但是
在功能类中有很多的空实现的方法是不太合适的。
定义一个中间的抽象类,让这个抽象类去实现接口。然后以空实现的方
式,重写接口中所有的抽象方法。
然后再让功能类去继承抽象类,然后有选择的去重写需要的方法即可

二、多态
1.多态
就是指事物的多种表现形式
2.多态的前提
要有继承或者实现的关系
要有方法的重写
要有父类引用指向子类对象
3.多态中的成员访问特点
 动态绑定:运行期间调用的方法,是根据其具体的类型
  编译时看的都是左边,运行时成员方法看的是右边,其他(成员变量和静态的
   方法)看的都是左边
成员变量:
编译时看左边,运行时也看左边
那么这个时候通过父类引用去调用成员变量,访问的也是父类的成员变量。
成员方法:
编译时看左边,运行时看右边
原因:成员方法是可以重写的。因为父类提供的方法可能已经不能满足子
类的需求了,重写后子类的方法更加贴合子类具体的需求。
    静态方法:
编译时看左边,运行是也看左边
原因:静态方法是属于类的。也就是说静态方法也不具备重写的概念。通
   过父类引用去调用静态方法,实际上也是通过引用类型所对应的类
   去直接调用的。就想当于用类名直接去调用的静态方法

4.多态中的转型
向上转型:由小到大  也就是说将一个子类对象赋予一个父类型的引用
向下转型:由大到小  也就是说将一个父类引用强制转成子类的对象
向下转型的格式:
目标类型 对象名 = (目标类型)父类的引用;

5.多态的好处和弊端
好处:
提高了代码的复用性(由继承关系保证的)
提高了代码的维护性(由继承关系保证的)
提高了代码的扩展性(由多态保证的)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值