Java----多态+抽象类+抽象方法+接口

Java基础创作日记 Day05
时间:2021年2月7日下午 阴
前天的总结少了点东西,今天补充上
现在是2021年2月8日 晚上,摸了一天鱼,今晚补完

文章目录

    • 抽象方法+抽象类+接口
      • 抽象方法
      • 抽象类
      • 接口
        • 实现接口的方法
        • 接口作用和理解
    • 多态
      • 什么是多态?
      • 多态的实现
      • 对象类型转换的注意事项
        • instanceof

抽象方法+抽象类+接口

抽象方法

当我们创建一个父类,父类的一些方法需要后代进行重写,此时父辈不需要写入任何代码,此时我们就可以把这些方法不写方法体,设置为抽象方法,然后用后代来重写这个方法
语法:
abstract void 方法名();

抽象类

含有抽象方法的类必须要用abstract修饰,用abstract修饰的类叫做抽象类,抽象类可以不含有抽象方法
语法:abstract class 类名{}
如:
Java----多态+抽象类+抽象方法+接口_第1张图片
抽象类不能被实例化,他需要被继承,然后由后代来实现,后代可以实例化
后代必须实现抽象类中的抽象方法

接口

当一个抽象类中的所有方法都是抽象的则可以把他定义成一个接口
接口中可以不含有抽象方法
需要用interface关键字
语法:interface 类名{}

实现接口的方法

和后代实现抽象方法不同的是,实现接口需要用implements关键字,而不是extends继承
语法:class 类名 implements 接口名{}
如:Java----多态+抽象类+抽象方法+接口_第2张图片
同样,实现接口的类必须实现接口中的所有抽象方法

接口中我们设置的变量,会自动默认使用public static final来修饰

用抽象类实现接口的时候,可以不实现接口中的所有抽象方法
一个类可以同时实现多个接口
如:
Java----多态+抽象类+抽象方法+接口_第3张图片
中间用逗号隔开

而且,接口中的方法和变量我们不用加abstract修饰符,因为系统会自动默认其中的方法用abstract修饰,变量默认使用public abstract来修饰

接口作用和理解

可以类比我们现实中的例子
如USB接口:
接口可以用来实现一个大种类的各种细化的功能,可以类比于电脑上的USB接口,我们先来分析这种的USB接口的工作原理,首先提供一个共用的接口,里面提供固定的线,来使开发商根据对应的线来实现和接口兼容的产品,比如鼠标、移动磁盘,这两个都可以正确的兼容电脑上的USB接口,他们可以为电脑提供不同的功能。
类比于代码中的接口:
我们代码接口中的几个抽象方法就类似于USB接口中的线,这就是创建接口,我们可以根据这些抽象方法来实现各种功能,来提供给其他的对象使用,这就是实现接口。
接口也可继承其他的接口

多态

什么是多态?

代码中,在同一个方法中,由于传入参数类型的不同而导致执行效果各异的现象就是多态
在代码中的展现方式:
首先,在Java中为了实现多态,允许一个父类类型的变量来引用一个子类类型的对象。如:
Java----多态+抽象类+抽象方法+接口_第4张图片
然后,我们定义一些子类来实现父类的一些方法,然后在主函数中创建一个接受父类对象参数的方法,方法中是要实现的父类方法,然后传入参数,代码会根据传入参数引用对象的不同来进行不同的实现方法

多态的实现

例:
Java----多态+抽象类+抽象方法+接口_第5张图片
我们先写一个接口,来写入抽象方法,然后写两个子类来对抽象方法进行不同的实现,然后在main中用父类类型来引入两个子类的对象,然后创建一个静态函数接收引用子类对象的父类类型变量,其中调用父类的抽象方法,然后我们传入参数,可以看到,传入不同对象类型的变量,会变现出对应动作

对象类型转换的注意事项

因为在多态中涉及到将子类对象当做父类类型使用的情况,所有会有一些注意事项

  1. 将子类对象当做父类使用时不需要任何显式的声明,直接父类类名 变量名=new 子类的构造函数
  2. 引用子类的父类类型变量可以调用父类中的方法,但是,子类中的方法他不能调用

instanceof

作用:判断一个对象是否是某个类(或接口)的实例或者其子类的实例
用法:
对象(或者对象引用变量) instanceof 类(或接口)
如:
Java----多态+抽象类+抽象方法+接口_第6张图片



无了

你可能感兴趣的:(JAVA,java,多态,抽象类,接口)