定义
在一个面向对象的系统中,系统的各种功能是由许许多多的不同对象协作完成的。在这种情况下,各个对象内部是如何实现自己的,对系统设计人员来讲就不那么重要了;而各个对象之间的协作关系则成为系统设计的关键。小到不同类之间的通信,大到各模块之间的交互,在系统设计之初都是要着重考虑的,这也是系统设计的主要工作内容。
个人问题
在学习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();
}
}
感悟
我想到了现实世界中,我们很多时候的工作是不被人看到的,如果你胜任不了现在的工作,很快就会被人代替,所以我们要学到的东西要更多,要不然,很快的就会被一个相似的但是比你强的人直接替换,因为别人只是看你的工作结果。