接口(java学习第二十三天)

本文介绍了Java中接口的概念,包括如何定义接口、类如何实现接口以及接口的多态使用。强调接口作为行为的抽象,不能包含构造方法和具体实现,但可以有常量。在Java中,接口的实现类必须重写所有抽象方法,除非自身也是一个抽象类。通过示例展示了类如何通过implements关键字实现接口,并通过多态调用接口方法。

接口就是一个公共标准,只要符合要求,大家可以一起使用。java中对接口更多体现在对行为的封装。

接口用关键字interface修饰:示例 public interface 接口名{}

类实例接口用implements 来“继承 ”:示例public class 类名 implements 接口名{}

接口实例化:参考多态。

多态形式:抽象类多态,接口多态

多态前提: 有继承或实现的关系,方法重写,父类/接口引用指向子类/实现的关系

接口的实现类:要么重写所有抽象方法   要么也是一个抽象类

成员变量: 只能是常量。默认会有public static final修饰

构造方法: 接口中没有构造方法,因为接口是对行为的抽象,所以不能有方法体。如果发现,其子类能够写构造方法,其实是抽象类继承Object导致的结果。

成员方法: 只能是抽象方法。默认修饰符 public abstract

注意:关于接口中的方法,jdk8和jdk9中有一些不同。

示例如下:

package day23;
//定义父接口看是否能继承
public class FuInterface {
}


package day23;
//定义父类,查看接口是否能继承
public class FuClass {
}



package day23;
//接口不能直接继承类,和接口
//接口不能实现类或者接口
public interface Jumping  {
    public static String  Name = "xx";//注意其实省略了final
    public static final  int age = 18;

    //测试构造方法。发现会报错,其实是不能有方法体的
    //public Jumping(){};

    public abstract void jump();
    //接口中也可以写非抽象方法?其实并不是,其实也是抽象方法,因为省略了abstract
    public  void  show();
}


package day23;
//后面注意实现接口的命名,统一为接口名+Impl
public class Cat extends Object implements Jumping {
    //会发现这里可以使用构造方法,其实是继承与Object导致。而不是Jumping
    public Cat(){
    }
    @Override
    public void jump() {
        System.out.println(Jumping.Name);//可以通过接口访问常量
        System.out.println("猫跳高");
    }

    @Override
    public void show() {
        System.out.println("非抽象方法也要重写");
    }
}


package day23;
//如果类是抽象类,可以不重写接口的方法。但是其子类也必须重写
public abstract  class Dog  implements  Jumping{
}



package day23;

public class Test {
    public static void main(String[] args) {
        //直接实现接口
        Jumping c = new Cat();
        c.jump();
        c.show();
        //也可以再实现中通过接口名实现
        System.out.println(Jumping.age);

        //通过再继承实现接口
        Jumping d = new Dog() {
            @Override
            public void jump() {
                System.out.println("重写jump");
            }

            @Override
            public void show() {
                System.out.println("重写show");
            }
        };
        d.jump();
        d.show();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值