Java——接口

接口

接口:是一种约定,本身不实现任何内容。(usb接口)
特点
(1)接口不能被实例化。

(2)接口中方法全部是抽象的。

(3)接口的实现类(子类)必须要实现接口中所有的方法。

(4)接口支持多继承(一个儿子多个爸爸)

接口和抽象类的区别

(1)抽象类使用abstract关键字,接口使用interface关键字。

(2)抽象类中可以有普通方法也可以有抽象方法,接口中所有方法都是抽象的。

问题

举例:音乐老师(既是老师,也是音乐家),需要有一种结构,音乐老师继承老师,同时继承音乐家。

​ 语文老师(既是老师,也是文学家),需要有一种结构,语文老师继承老师,同时继承文学家。

解决:

​ (1)首先,有老师类,然后有包含音乐家的行为的接口,然后有包含文学家行为的接口

​ (2)音乐老师,继承老师,同时继承音乐家的接口

​ (3)语文老师,继承老师,同时继承文学家的接口。

编程案例

//定义一个接口,使用关键字interface
public interface ISing 
{
    //唱歌
    void Sing(); //接口中的方法会被隐式的指定为 public abstract。
}

//定义一个歌手类,继承ISing接口
public class Singer implements ISing
{   
    @Override
    public void Sing() {
        // TODO Auto-generated method stub
        System.out.println("我在演唱会现场演唱《曾经的你》");
    }   
}

//定义一个学生类,继承ISing接口
public class Student implements ISing
{
    @Override
    public void Sing() {
        // TODO Auto-generated method stub
        System.out.println("我在寝室唱歌《分手快乐》");
    }
}

**main方法的调用:**
Student stu = new Student();
stu.Sing();

Singer singer = new Singer();
singer.Sing();

利用接口实现多继承

假设有4种动物,猫,狗,鸭,猴,我们需要规范其方法,和动物相关的方法有
(1)吃东西,(2)游泳,(3)爬树。

此时所有动物都会吃东西,但是猫和猴会爬树,不会游泳;狗和鸭会游泳,不会爬树,所以我们很难找到4种动物共同的父类解决所有的问题,此时可以定义接口来解决此问题
代码如下:

//定义一个动物类,作为所有动物的父类,提供一个Eat()方法,给所有动物来继承。
public class Animal {
    public void Eat()
    {
        System.out.println("我在吃东西!");
    }   
}

//定义一个游泳的接口给狗和鸭来继承
public interface ISwim 
{
    void Swim();
}

//定义一个爬树的接口给猫和猴来继承
public interface IClimbTree 
{
    void ClimbTree();
}


// --------------------------------------------------------------------------
//定义一个猫类继承自动物类和IClimbTree爬树接口
public class Cat extends Animal implements IClimbTree
{
    @Override
    public void ClimbTree() {
        // TODO Auto-generated method stub
        System.out.println("我用尖锐的爪子在爬树");
    }
}
//定义一个猴类继承自动物类和IClimbTree爬树接口
public class Monkey extends Animal implements IClimbTree
{
    @Override
    public void ClimbTree() {
        // TODO Auto-generated method stub
        System.out.println("我用我四肢的力量在爬树");
    }
}
//定义一个狗类继承自动物类和ISwim游泳接口
public class Dog extends Animal implements ISwim
{
    @Override
    public void Swim() {
        // TODO Auto-generated method stub
        System.out.println("我用狗刨式游泳");
    }
}
//定义一个鸭类继承自动物类和ISwim游泳接口
public class Duck extends Animal implements ISwim
{
    @Override
    public void Swim() {
        // TODO Auto-generated method stub
        System.out.println("我用鸭掌在游泳");
    }
}

**main方法调用:**
Dog dog = new Dog();
dog.Swim();

Cat cat = new Cat();
cat.ClimbTree();

Duck duck = new Duck();
duck.Swim();

Monkey monkey = new Monkey();
monkey.ClimbTree();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值