Java 基础(04)接口和多态

接口 interface

一、基本概念

  • 实现了 规范具体实现 的分离;
  • 普通类(具体实现); 抽象类(具体实现,规范);接口(规范);
  • 接口之间是继承关系(extends);类和接口之间是实现(implements);
  • 允许接口之间的 多继承多实现

1、接口与类

  • 接口不能用于实例化对象,没有构造方法
  • 一般来说接口中的方法都是抽象方法,修饰符默认public abstract
  • 接口成员变量修饰符默认public static final ,实际上是常量
  • 一般来说接口中不能含有静态代码块以及静态方法
  • 注意:JDK1.8中接口可以定义有方法体的方法,修饰符为staticdefault(定义方法默认实现)
/* 文件名 : Animal.java */
interface Animal {
   public void eat();
   public void travel();
}

2、标记接口

  • 不含任何方法的接口
  • 可以使用一个标记接口来建立一组接口的父接口
  • Serializable接口用于标记一个类是否可被序列化和反序列化

面向接口编程:搭建软件的框架,软件的整体设计

3、接口实现

  • 接口的实现类必须实现接口的所有方法,而且必须将这些方法声明为 public 的
  • 可以实现多个接口,间接实现多继承
  • 一个接口可以继承另外的接口,该接口的实现类的话需要实现该接口和父接口

二、类型转换

1、基本类型

  • 基本类型是值从一种类型转换为另一种类型
  • 自动的转换过程一般是容量低的向容量高的类型进行转换

2、引用类型

  • 仅仅是引用转换为了超类或者接口的引用,对象本身是没有发生变化的
  • 这个过程是自动的,称为向上转型,向上转型之后特有的方法会丢失,只能调用超类方法
  • 只有在已知对象的具体类型的情况下可以进行强制的向下转型
  • 强转可能会出现类型的异常,可以先用 instanceof 方法判断

3、方法查找

实例方法查找
  • 具体方法的查找是从创建对象的类开始沿着继承结构往上找
  • 下面的示例中需要注意的是emp2调用的是 manager 的方法
    在这里插入图片描述
类方法查找
  • 总是在引用变量声明的类中查找,实例中的emp2的类方法调用的就是 employee 的方法,而不是 manager的方法
    在这里插入图片描述

多态

一、概述

1、多态的概念

  • 简单来讲,超类及其子类都可以看作超类的类型,接口和实现类都可以看作接口类型,向这些 一样的类型 传递箱相同的消息(就是调用相同的方法),会有不同的反应(就是具体的方法体是不同的),这就是所谓的多态

2、关于多态的细节说明

  • 多态是方法的多态,与属性无关
  • 分为 重载式多态重写式多态
  • 多态的原理是基于运行时的动态方法绑定
多态的存在要有3个必要条件
  • 继承或实现
  • 方法重写或重载
  • 父类引用指向子类对象或接口引用指向实现类对象

3、构造方法和多态

  • 构造方法应该用尽可能少的动作将状态设置好
  • 尽量不要在构造器中进行方法调用,尤其是多态调用
  • 构造器只能安全调用 finalprivate方法,因为这些方法不会被重写

二、抽象方法和抽象类

1、抽象类

  • 抽象类用 abstract 进行修饰
  • 抽象类不一定有抽象方法
  • 抽象类可以包含一般的类成员
  • 抽象类不可以实例化
  • 抽象类的子类必须实现抽象类中所有的抽象方法才可以实例化
public abstract class Employee
{
    //code

2、抽象方法

public abstract class Employee
{
   private String name;
   private String address;
   private int number;
   
   public abstract double computePay();//抽象方法
}

3、注意事项

  • 如果一个类包含抽象方法,要么是抽象类,要么是接口
  • 抽象类可以没有抽象方法
  • 任何子类必须重写父类所有抽象方法,或者声明自身为抽象类
  • 子抽象类继承父抽象类,在父类存在有参构造器的前提下必须显性调用父类有参构造
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值