Java开发从入门到精通(八):Java的面向对象编程OOP:接口

(一)Java的接口

1.1 认识接口

  • Java提供了一个关键字**interface**,用这个关键字我们可以定义出一个特殊的结构:接口。
  • 接口中的变量默认为常量
  • 接口中的成员方法默认为抽象方法
  • 接口中不能有除了常量方法外的其他成员
  • 接口不能被创建对象
    在这里插入图片描述
    在这里插入图片描述

注意:接口不能创建对象;接口是用来被类实现(implements)的,实现接口的类称为实现类。 implements也可以当作继承 实现类也可以叫子类
在这里插入图片描述

一个类可以实现多个接口(接口可以理解成干爹),实现类实现多个接口,必须重写完全部接口的全部抽象方法,否则实现类需要定义成抽象类。

创建两个接口

public interface B {
    void testb1();
    void testb2();
}
public interface C {
    void testc1();
    void testc2();
}

创建一个实现类,重写全部方法

public class D implements B,C{

    @Override
    public void testc1() {

    }

    @Override
    public void testc2() {

    }

    @Override
    public void testb1() {

    }

    @Override
    public void testb2() {

    }
}

在写一个测试类,D继承了所有的接口,自然就可以调用所有的接口方法

public class Test {
    public static void main(String[] args) {
        // 目标:认识接口。

        D d = new D();//就可以调用所有方法了
    }
}

接口的好处(重点)

  • 弥补了类单继承的不足,一个类同时可以实现多个接口。
  • 让程序可以面向接口编程,这样程序员就可以灵活方便的切换各种业务实现

代码演示A不仅继承了student 还继承了接口drive sing 可以实例化成任何一个类,然后调用他们的方法,这让A同时具有了多种角色,A既是司机又是student还是歌手 弥补了之前一个类只能继承一个角色的不足

public class jiekou {
    public static void main(String[] args) {
        Singer s=new A();
        s.sing();
        
        Driver d = new A();
        d.drive();
        
        Student t = new A();
        t.Study();
    }

}

class A extends Student implements Driver,Singer{

    @Override
    public void drive() {

    }

    @Override
    public void sing() {

    }
}
class Student{
    public  void Study(){
        
    }

}
interface Driver{
    void drive();
}
interface Singer{
    void sing();
}

让程序可以面向接口编程,这样程序员就可以灵活方便的切换各种业务实现
上边这句指的是下面这里司机这个方法我们可以灵活切换角色 d司机和c司机 很方便 不需要重新写

public class jiekou {
    public static void main(String[] args) {
        Singer s=new A();
        s.sing();

        Driver d = new A();
        d.drive();

        Driver c = new A();
        c.drive();

        Student t = new A();
        t.Study();
    }
}

这里使用的父类指向子类 animal=cat 但是我们想换成dog 其实就需要把cat改成dog就行

Animal a= new Cat();
a.cry();
Animal a= new Dog();
a.cry();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

HACKNOE

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

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

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

打赏作者

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

抵扣说明:

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

余额充值