接口(用来定义功能)

1.概念

接口是一种特殊的抽象类,这种抽象类中包含抽象方法

2.接口的定义

使用interface关键字来声明接口;

使用implements关键字实现接口;

接口中可以定义哪些内容

jdk8之前 :只能定义抽象方法和静态常量

jdk8之后: 可以定义抽象方法和静态常量, 还可以定义默认方法和静态方法

3.接口的特点

(1)接口是隐式抽象的,声明接口时,可不使用abstract关键字

(2)接口中的方法可为抽象的,默认的,静态的

(3)接口不能被创建对象

(4)接口声明的属性默认为public static final 

(5)与继承类似,接口与实现类之间存在多态性

(6)类实现接口时,必须实现接口中的所有方法,否则,该类应声明为抽象类

package Day6.MyInterface;

public interface MyInterface extends InterfaceA,InterfaceB{
    //public static final int a=10;  静态常量
    int a=10;
    //public abstract void play();  抽象方法
    void play();
    //默认方法。通过子类对象访问
    public default void demo1(){
        System.out.println("default demo1");
    }
    //静态方法,通过接口名访问
    public static void demo2(){
        System.out.println("static demo2");
    }
}



public class Test {
    /*
    接口是更彻底的抽象,因此接口不能被创建对象,不能有成员变量、构造方法,且成员方法是抽象的,默认的,静态的
    设计接口是为了让其他类去继承实现的
     */
    public static void main(String[] args) {
        MyInterface.demo2();//通过接口名访问静态方法
        System.out.println(MyInterface.a);//访问静态常量
    }
}



/*
类实现接口  一个类可实现多个接口
要不重写接口中所有的抽象方法,要不将此类声明为抽象类
 */

//public class A implements MyInterface,InterfaceA,InterfaceB{
public class A implements MyInterface{

    @Override
    public void play() {
        System.out.println("重写接口中抽象方法——play");
    }

    @Override
    public void a() {

    }

    @Override
    public void b() {

    }
}



public interface InterfaceA {
    void a();
}



public interface InterfaceB {
    void b();
}
public abstract class Animal {
    String name;
    public Animal(){

    }
    public Animal(String name){
        this.name=name;
    }
    public abstract void play();//子类不同,定义为抽象方法
    public void eat(){//子类相同,定义为非抽象方法
        System.out.println("动物吃");
    }
}




public class Bug extends Animal implements Speak{

    @Override
    public void play() {
        System.out.println("虫子玩");
    }

    @Override
    public void speak() {

    }
}



public class Fish extends Animal implements Swim{
    @Override
    public void play() {

    }

    @Override
    public void swim() {

    }
}



public interface Speak {
    void speak();
}



public interface Swim {
    void swim();
}



public class Test {
    public static void main(String[] args) {
        /*Bug b=new Bug();
        Fish f=new Fish();*/
        Animal b=new Bug();
        Animal f=new Fish();
        /*
        同样也可以用接口来表示,实现多态性
         */
        Speak speak=new Bug();
        Swim s=new Fish();
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小谭同学ha

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值