面向接口编程

定义

在一个面向对象的系统中,系统的各种功能是由许许多多的不同对象协作完成的。在这种情况下,各个对象内部是如何实现自己的,对系统设计人员来讲就不那么重要了;而各个对象之间的协作关系则成为系统设计的关键。小到不同类之间的通信,大到各模块之间的交互,在系统设计之初都是要着重考虑的,这也是系统设计的主要工作内容。

个人问题

在学习java的初始阶段中,我们可能会感到为什么要定义出一个接口这个东西来给一个类进行一个实现。我们直接编写出一个类,它这样还不用我们写多几行代码,他这样不香吗?
但是当我们越是学习,我们就会发现,接口这种定义是为了什么?我发现接口的定义,和我们的现实生活还有很大的关系。

基础

多态

多态是指同一个行为具有多个不同的表现形式。是指一个类实例(对象)的相同方法在不同情形下具有不同的表现形式。封装和继承是多态的基础,也就是说多态是一种表现形式而已。

向上转型

向上转型:通过子类对象(小范围)转化为父类对象(大范围),这种转化是自动完成的,不用强制转移

向下转型

向下转型:通过父类对象(大范围)转化为子类对象(小范围),这种转化不是自动完成,需要自动完成。

接口的基于

接口就是基于向上转型
我们定义一个父类的接口,然后将后面的的实现的接口子类赋予父类,日后想更改animal里面的内容,就可以直接修改后面的子类,new一个新的。

/**
 * @author wangfan
 * @date 2021/02/01
 */
public interface Animal {
    /**
     * 定义一个呼吸的方法
     */
    void breath();

    /**
     * 定义一个吃饭的方法
     */
    void eat();
}

```java
/**
 * @author wangfan
 * @date 2021/02/01
 */
public class Cat implements Animal{
    public Cat(){
        System.out.println("我是一只猫!");
    }
    @Override
    public void breath() {
        System.out.println("我需要呼吸氧气");
    }

    @Override
    public void eat() {
        System.out.println("我是吃鱼");
    }
}
/**
 * @author wangfan
 * @date 2021/02/01
 */
public class Fish implements Animal{
    public Fish(){
        System.out.println("我是一只鱼!");
    }
    @Override
    public void breath() {
        System.out.println("我需要呼吸氧气");
    }

    @Override
    public void eat() {
        System.out.println("我是吃水草");
    }
}

/**
 * @author wangfan
 * @date 2021/02/01
 */
public class demo {
    public static void main(String[] args) {
        Animal animal = new Fish();
        animal.breath();
        animal.eat();
    }
}

感悟

我想到了现实世界中,我们很多时候的工作是不被人看到的,如果你胜任不了现在的工作,很快就会被人代替,所以我们要学到的东西要更多,要不然,很快的就会被一个相似的但是比你强的人直接替换,因为别人只是看你的工作结果。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

bufanjun001

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

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

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

打赏作者

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

抵扣说明:

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

余额充值