IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 【Java 面向对象】快速学习接口(引用类型)、三大特征之多态、引用类型转换 -> 正文阅读

[Java知识库]【Java 面向对象】快速学习接口(引用类型)、三大特征之多态、引用类型转换

根据课程图文做的笔记,供复习

1. 接口(引用数据类型:数组、类、接口)

1.1 接口的含义

接口(方法的集合)interface
抽象方法>JDK7成员变量
默认方法和静态方法>8构造方法
私有方法>9成员方法
不能创建对象,可以被实现implements。实现接口的类可以看作接口的子类可以创建对象,继承

在这里插入图片描述
实现接口的类必须实现接口的所有抽象方法 —> 创建该类对象,就可以调用方法
如果不实现接口的所有抽象方法 = 有方法没有函数体 = 有抽象方法 = 必须抽象类

1.2 接口的定义格式

public interface InterfaceDemo {
    //抽象方法 关键字可省略  没有方法体,供子类实现使用
    public abstract void abstractMethod();
    
    //默认方法 供子类调用或者子类重写
    public default void defaultMethod(){
        System.out.println("1");
    };
    
    //静态方法 供接口直接调用
    public static void staticMethod(){
        System.out.println("2");
    }
    
    //私有方法 JDK9
    //private void method(){}
}

1.3 接口的实现

实现接口的类可以称为接口的实现类,也可以称为接口的子类

  • 抽象方法
    • 必须重写
  • 默认方法
    • 可以直接调用也可以重写,但只能通过实现类的对象来调用
    • 直接调用:实现类里面直接继承接口的方法,只需要创建实现类的对象调用就好
    • 重写:实现类重写方法,创建的对象调用实现类的方法内容
  • 静态方法
    • 无法重写
    • 与class文件相关,只能通过接口名调用
    • 不可以通过实现类的类名和实现类的对象调用
  • 私有方法:只有默认方法可以调用
    • 私有静态方法:默认方法和静态方法可以调用
    • 一般如果接口中有多个默认方法的内容重复,可以抽取出来封装到私有方法里面,供默认方法调用。

1.4 接口的多实现

  • 一个类只能继承一个父类
  • 一个类可以实现多个接口
  • 一个类可以继承一个父类日,同时实现多个接口
    在这里插入图片描述
  • 抽象方法:
    • 如果实现多个接口中有同名的多个抽象方法,在实现类中只需要重写一次
  • 默认方法:
    • 实现的接口里面有重名的默认方法时,必须重写此默认方法,只需要一次
    • 没有重名,实现类都可继承调用
  • 静态方法:
    • 同名的静态方法并不冲突
    • 只能通过接口名.静态方法名()调用

如果一个类继承的父类的成员方法和接口中默认方法 重名时,子类会就近选择执行父类的成员方法

1.5 接口的多继承

  • 使用extends关键字,一个接口能继承另一个或者多个接口。
  • 子接口继承父接口的方法,如果父接口的默认方法中有重名的,子接口需要重写一次
  • 子接口重写默认方法时可以保留default关键字
  • 子类重写默认方法时,不可以保留default关键字

2. 多态

2.1 定义

多态:同一行为,具有多种不同的表现形式
跑:慢跑、快跑
飞:有高有低,有快有慢,形态不同

2.2 多态的前提

  1. 继承或者实现
  2. 重写方法
  3. 父类引用指向子类对象

2.3 多态的形式体现

父类类型(接口/父类)变量名 = new 子类对象;
变量名.方法名();
如Collection是List接口的父接口, ArrayList类实现了List接口

    Collection<String> coll = new ArrayList<String>();
    coll.add("小");

使用多态形式调用方法时,

  • 先检查父类中是否有该方法,没有则编译错误
  • 有的话,执行子类重写后的方法
    在这里插入图片描述

2.4 多态的好处

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
父类类型接收子类对象,并把子类对象传递给方法。
当方法被执行时,多态规定执行子类重写的方法,所以一个方法可以代替多个方法,而且在子类增加时,这种方法也不用再次编写。

2.5 引用类型的转换

2.5.1 向上转型

多态本身:子类类型向父类类型向上转换,默认就是向上转型
向上转型:父类引用一个子类对象
在这里插入图片描述

2.5.2 向下转型

向下转型:父类类型向子类类型向下转换(强制)
已经向上转型的子类对象,将父类引用转为子类引用,使用强制类型转换
在这里插入图片描述

2.5.3 转型的原因

用多态方式调用方法时,首先检查父类是否有方法,也就是不能调用子类有父类没有的方法,会直接编译错误,无法运行。如果想要调用子类的特有方法,必须向下转型。
在这里插入图片描述
在这里插入图片描述

2.5.4 转型异常 instanceof

在这里插入图片描述
类型转换异常:创建了Cat类型对象,将它转换成Dog对象
。这两个类并没有什么继承关系,不可以类型转换

使用 instanceof关键字,对引用变量做类型校验
在这里插入图片描述
在这里插入图片描述

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-09-02 11:13:10  更:2021-09-02 11:14:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:32:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码