接口、多态

 

一、接口


1.接口的格式

pUblic interface 接口名 {


}
//子类与接口的关系  用关键字 implements

public class 子类 implements 接口{


}        

 


 

2.接口中的成员

接口中只有5种成员, 分别为: 抽象方法, 默认方法(JDK8), 静态方法(JDK8), 私有方法(JDK9), 自定义常量

  • 抽象方法
//public abstract: 可以省略,默认存在
public abstract 返回值类型 方法名(参数);
  • 默认方法
// public 可以省略,默认存在
public default 返回值类型 方法名(参数){
    方法体;
}
  • 静态方法
// public : 可以省略, 默认存在

public static 返回值类型 方法名(参数列表) {
    方法体;
}
  • 私有方法
    • 私有普通方法
private 返回值类型 方法名(参数){
    方法体;
}
  • 私有静态方法
private static 返回值类型 方法名(参数){
    方法体;
}
  • 自定义常量
// public static final : 可以省略, 默认存在
public static final 数据类型  常量名 = 值;

  


 

3.接口的使用

public class 子类 implements 接口1,接口2...{


}

使用特点

  • 抽象方法(重要)

    • 用来给子类重写, 子类必须重写接口中所有的抽象方法

  • 默认方法

    • 子类可以直接调用默认方法

    • 子类可以重写默认方法

  • 静态方法

    • 不需要创建子类对象, 直接使用 接口名.xxx 去调用, 只能这样调用

  • 私有方法

    • 只能在本接口中使用, 本质上其实就是为当前接口中的默认方法和静态方法服务的

 


 

4.接口多实现的注意事项

  1. 两个接口中有同名的抽象方法,子类只需重写一个
  2. 两个接口中有同名的默认方法,子类必须重写这个默认方法
  3. 两个接口中有同名的静态方法,无影响,使用哪个接口就调用哪个方法
  4. 父类中的方法和接口中的默认方法同名,使用的是父类中的方法

 


 

5.接口的多继承

 

  • 类与接口之间的关系
 关系
类与类的关系继承关系,只能单继承不能多继承,但是支持多层继承(如子类继承父类,父类继承父类的父类)
类与接口的关系实现关系,可以多实现
接口与接口的关系继承关系,可以多继承
  • 接口与抽象类
 抽象类接口
创建对象不能创建对象

不能创建对象

构造方法有构造方法,为了给子类初始化

没有构造方法

抽象方法有,给子类重写有,给子类重写
默认方法没有默认方法有默认方法

 


 

二、多态


概念:同种事物的不同形态

1.多态的前提

  1. 要有父类(extends / implements)关系
  2. 要有方法的重写(没有方法重写 多态无意义)
  3. 父类引用指向子类对象
//父类引用指向子类对象
Father f = new Son();

 


2.多态情况成员使用特点

   (1)成员变量

  • 编译看父类,运行也看父类

   (2)成员方法

  • 编译看父类,运行看子类

3.多态应用场景

如果方法的参数是父类,实际传入的就是该类的子类对象

  • 方法中参数传递

4.多态的注意事项

多态的弊端

  • 当写出了多态的格式后,父类的引用不能直接访问子类特有的属性和行为

 

 

 

 

 

 

 

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值