接口 三大特征——多态 引用类型转换

接口

接口的定义和类方式相似,但是使用的是interface关键字。。。它并不是类,而是另外一种引用数据类型。
引用数据类型:数组,类,接口

接口不能创建对象,但可以被实现(implements,类似于被继承)

定义格式:public interface 接口名称{
       //抽象方法
       //默认方法
       //静态方法
       //私有方法
        }

——————————————————

抽象方法:使用abstract关键字修饰,可以省略,没有方法体。该方法供子类实现使用。

例如:public interface InterFaceName{
public abstract void method();
}

默认方法:使用default修饰,不可省略,供子类调用或者子类重写

例如:public interface InterFaceName{

   public default void method(){}
   }
静态方法:使用static修饰,供接口直接调用

例如: public interface InterFaceName{
public default void method() {
//执行语句

public static void method2(){
//执行语句
}
}

静态方法是无法重写的
静态方法在接口中创建

私有方法:

使用private修饰,供接口中的默认方法或静态方法调用。
例如: public interface InterFaceName{
private void method(){
//执行语句
}
}


基本的实现

非抽象子类实现接口:

1、必须重写接口中所有抽象方法
2、继承了接口的默认方法,即可直接调用,也可以重写
实现格式:
class 类名 implements 接口名 {
//重写接口中抽象方法【必须】
//重写接口默认方法【可选】
}

抽象方法的使用

必须全部实现,例如:
定义接口:
public interface LiveAble{
//定义抽象方法
public abstract void eat();
public abstract void sleep();
}
定义实现类:
public class Animal implements LiveAble {
@Override
public void eat(){
system.out.println(“吃东西”);
}
@Override
public void sleep(){
system.out.println(“晚上睡”);
}
}
定义测试类
public class InterfaceDemo{
public static void main(String[] args){
//创建类对象
Animal a=new Animal()
//调用实现后的方法
a.eat();
a.sleep();
}
}
输出结果:吃东西
晚上睡角



在接口中写私有方法时,需要在私有方法前用默认方法调用私有方法
例如:default void a(){
…()调用私有方法
…()
}

————————————————————————————

抽象方法:

在接口定义抽象方法 在实现类中打印方法 在测试类中new一个新的子类对象 之后调用实现后的方法

默认方法:

在接口定义中写一个打印方法体 实现类中 继承接口 里面什么都不用写 直接调用 在测试类中new一个新的子类对象 之后调用默认方法
重写默认方法 就是在实现类中写一个方法体 在测试类中调用重写方法 之后输出的结果就是在实现类中写的东西

静态方法:

在接口定义中写一个打印方法 实现类中啥也不用写 因为无法重写静态方法 测试类中调用接口方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值