接口、多态

简介: 接口概念:因为每个类只有一个直接的父类,若一个类同时有两个父类,如:带橡皮的铅笔作用:1.拓展功能2.定义约束规范3.程序的解耦(低耦合,高内聚)定义格式: interface 接口名 { }实现接口的格式:class 类名 implement 接口{}接口注意的细节:1.

接口

概念:因为每个类只有一个直接的父类,若一个类同时有两个父类,如:带橡皮的铅笔
作用:
1.拓展功能
2.定义约束规范
3.程序的解耦(低耦合,高内聚)
定义格式:

  interface 接口名 {  

  }

实现接口的格式:

class 类名 implement 接口{

}

接口注意的细节:
1.接口其实是特殊的类
2.接口中的成员变量都是属于常量,默认的修饰符是public static final
3.接口中的方法都是抽象的方法,默认的修饰符是public abstract void
4.接口是不能用于创建对象的
5.接口没有构造方法,接口的变量都是常量,接口的方法都是抽象的方法
6.如果一个非抽象类实现一个接口时,必须实现接口中的所有方法

接口与接口之间的关系

细节:
1. 一个接口是可以继承多个接口的

接口与类之间的关系

细节:
1. 非抽象类实现一个接口时,必须要把接口中所有方法实现
2. 一个类可以实现多个接口
疑问:java支持多实现接口为什么不能支持多继承呢?
因为如果支持多继承的话,那么假设多个父类中有相同的成员,那么子类就不知道到底用哪一个,但是接口只需要使用实现的那一个即可
3. 抽象类实现接口的时候,可以实现接口中的方法,也可以不实现接口的方法

多态

概念:
父类的引用类型变量指向了子类的对象或者是接口的引用类型变量指向了接口实现类的对象(一个对象具有多种形态)
前提:
必须存在继承或者实现关系
注意的细节:

1.多态情况下,子父类存在着同名的成员变量时,默认会访问父类的成员变量
2.多态情况下,子父类存在着同名的非静态函数时,会默认访问子类的成员函数
3.多态情况下,子父类存在着同名的静态函数时,会默认访问父类的成员函数
4.多态情况下,不能访问子类特有的成员
总结:
多态情况下,子父类存在同名的成员时,默认都是会访问父类的成员,只有在非静态函数下会访问子类的成员变量

应用场景

  1. 用于形式参数的时候,可以接收更多类型的参数
  2. 多态用于返回值类型的时候,可以返回多个类型
  3. 多态情况下,不能访问子类特有的成员

好处

  • 提高拓展性
相关文章
【面向对象】抽象类和接口
【面向对象】抽象类和接口
|
7月前
|
Java
1.8 封装、继承、多态
1.8 封装、继承、多态
24 1
|
Java
Java面向对象—抽象类和接口
Java面向对象—抽象类和接口
81 0
|
Java
Java面向对象之抽象类与接口
抽象类的使用原则如下: (1)抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),默认为public; (2)抽象类也有构造器 (3)抽象类不能直接实例化,需要依靠子类采用向上转型的方式处理; (4)外部抽象类不允许使用static声明,而内部的抽象类运行使用static声明。使用static声明的内部抽象类相当于一个外部抽象类,继承的时候使用“外部类.内部类”的形式表示类名称 (5)有时候由于抽象类中只需要一个特定的系统子类操作,所以可以忽略掉外部子类。这样的设计在系统类库中会比较常见,目的是对用户隐藏不需要知道的子类
73 0
|
设计模式 Java 数据安全/隐私保护
【封装、继承、多态】总结
【封装、继承、多态】总结
79 0
笔记12-多态&抽象类&接口
笔记12-多态&抽象类&接口
|
存储 Java
Java面向对象篇:封装、继承、多态(一)
Java面向对象篇:封装、继承、多态
Java面向对象篇:封装、继承、多态(一)
Java面向对象篇:封装、继承、多态(二)
Java面向对象篇:封装、继承、多态
Java面向对象篇:封装、继承、多态(二)