Java篇——抽象类与接口-粗略讲接口(一个类对应多接口,接口的多继承,接口与抽象类的区别)

5.同时可实现多个接口

在java中,类与类之间是可单继承的,一个类只允许有一个父类,即java中是不支持多继承的,但是一个类中可以同时实现多个接口。

我们以一个动物类中的cat为例:

class Animal{
    protected String name;
    public Animal(String name){
        this.name=name;
    }
}
interface  IFlying{
    void fly();
}
interface  IRunning{
    void run();
}interface  ISwimming{
    void swim();
}
class Cat extends Animal implements IRunning{
    public Cat(String name) {
        super(name);
    }

    public void run(){
        System.out.println(this.name+"正在走猫步");
    }
}
public class Test {
    public static void main(String[] args) {
        Cat cat = new Cat("小猫");
        cat.run();
    }

类:Animal类

接口:IFlying,IRunning,ISwimming接口

运行结果:

同时我们在main方法中可以实现小猫正在走猫步,也可以同时实现两个接口,比如我们还建立一个青蛙对象,青蛙既能跑又能游泳,则实现代码如下:

class Animal{
    protected String name;
    public Animal(String name){
        this.name=name;
    }
}
interface  IFlying{
    void fly();
}
interface  IRunning{
    void run();
}interface  ISwimming{
    void swim();
}
class Frog extends Animal implements IRunning,ISwimming{
    public Frog(String name){
        super(name);
    }
    @Override
    public void run() {
        System.out.println(this.name+"正在走蛙步");
    }

    @Override
    public void swim() {
        System.out.println(this.name+"正在游蛙泳");
    }
}
public class Test {
    public static void main(String[] args) {
  Frog frog=new Frog("青蛙");
  frog.run();
  frog.swim();

    }
}

无论是要实现两个接口还是多个接口,都是按这种方法来做。只是要注意:一个类实现多个接口时,每个接口中的抽象方法都要实现,否则类必须设置为抽象类

同时,由上面的例子我们也可以摸索得到接口到底在程序设计中扮演着一个什么样的角色,类仿佛是共性的抽取,接口是对特殊行为的抽象,一个动物可能具有多个特殊行为,但因为java中类只能单继承,所以接口这个工具就应运而生了。

同时在java面向对象编程中,一个类继承一个父类,实现多个接口这种用法非常常见。

继承表达的含义就是is-a语义,而接口表达的含义就是具有xxx特性

6.接口间的继承 

类与类之间虽然是单继承的,但接口与接口之间可以实现多继承

接口可以继承一个接口,达到复用的效果

关键字:extends

interface IRunning{
    void run();
}
interface ISwimming{
    void swim();
}
interface IAmphibious extends IRunning,ISwimming{
    
}
class Frog implements IAmphibious{
    
}

IAmphibious 两栖动物

通过接口继承创建一个新的接口IAmphibious表示两栖的,IAmphibious这个接口具备IRunning、ISwimming功能,同时也要记得重写IRunning,ISwimming方法

接口间的继承相当于把多个接口合并在一起

7.对某些Comparable接口Clonable接口暂缓,对这两者理解不够,需写者再多理解再单独写一篇博客

8.抽象类与接口的区别 

抽象类和接口都是java多态的常见使用方式

核心区别抽象类可以包含普通方法和普通字段,这样的普通方法和字段可以被子类直接使用,而接口不能包含普通方法,且子类必须重写所有的抽象方法

其他的不同比较见下图便可知 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值