Java中接口的理解和使用

399 篇文章 12 订阅

1、接口的理解

package com.example.demo.interfaceClass;


/**
 * 1、我们前面用继承关系,描述了动物、哺乳动物、爬行动物的各种关系
 * 2、现在我们要描述:飞机、公鸡、导弹、子弹、篮球、石头的关系?
 */

//进行一次抽象,它们都会飞
public interface Flyable {
    int MAX_SPEED = 11000;
    int MIN_HEIGHT = 1;
    void fly();
}

//进行第二次抽象,导弹、子弹、石头可以攻击
interface Attack {
    void attack();
}

/**
 * 这就是接口的意义:进行了更加抽象的定义
 */
class Plane implements Flyable {
    @Override
    public void fly() {
        System.out.println("飞机靠发动机起飞!");
    }
}

class Man implements Flyable {
    @Override
    public void fly() {
        System.out.println("跳起来,飞!");
    }
}

/**
 * 石头既要遵守Flyable的规范,也要遵守Attack的规范。
 * 或者说石头既有Flyable的特性,也有Attack的特性。
 *
 * 类可以实现多个接口(注意不是继承)。
 * 继承还不够抽象,必须依赖接口。
 */
class Stone implements Flyable, Attack {
    int weight = 100;

    @Override
    public void fly() {
        System.out.println("被人扔出去,飞!");
    }

    @Override
    public void attack() {
        System.out.println("石头扔出去攻击!");
    }
}

测试类:

package com.example.demo.interfaceClass;

/**
 * @Description 接口测试类
 * @Auther gf.x
 * @Date 2020/4/13 2:36
 */
public class Test {
    public static void main(String[] args) {
        Flyable f = new Stone(); //多态 父类引用指向子类对象
        //f.weight //这里通过f获取不到Stone类的weight的属性
        //如果非要获得Stone类的weight的属性的话,可以把f强转回Stone类型
    }
}

2、接口的使用

接口:

package com.example.demo.interfaceClass;

public interface MyInterface {

    //接口中只有:常量、抽象方法

    //public static final 接口中定义常量时,写或不写默认都会加上
    String MAX_GREAD = "boss";
    int MAX_SPEED = 120;

    //方法修饰符只支持public、abstract,这里不管加不加public abstract,默认都会加的
    //不支持private修饰符
    public void test();
    public int test1(int a, int b);
}

实现类:

package com.example.demo.interfaceClass;

/**
 * @Description 接口的理解和使用
 * @Auther gf.x
 * @Date 2020/4/13 1:24
 */
public class MyClass implements MyInterface {

    @Override
    public void test() {
        //MyInterface.MAX_GREAD;
        System.out.println("test!");
    }

    @Override
    public int test1(int a, int b) {
        System.out.println("test1!");
        return a + b;
    }
}

3、接口的多继承

package com.example.demo.interfaceClass;

/**
 * 接口的多继承
 */
public interface InterfaceA {
    void aaa();
}

interface InterfaceB {
    void bbb();
}

//接口多继承
interface InterfaceC extends InterfaceA, InterfaceB {
    void ccc();
}

class TestClass implements InterfaceC {

    @Override
    public void aaa() {
        System.out.println("aaa!");
    }

    @Override
    public void bbb() {
        System.out.println("bbb");
    }

    @Override
    public void ccc() {
        System.out.println("ccc");
    }
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值