什么是抽象类与接口

抽象类与接口

一个说我是谁,一个说我能做什么。

第一章 抽象类: 一个不完整的自己

抽象类,是一个半成品。

它把共性都写好了------名字、年龄、头发、肤色但是他不是一个完成的东西,你不能直接给他造出来。

csharp 复制代码
public abstract class Animal{ //一个概念并不是一个实物
    String name; //共性
    public void sleep(){
        //可继承到子类的方法
        System.out.println(name+"睡着了")
    }
    //就像留给孩子的梦想蓝图,他需要自己去完成
    public abstract void makeSound();

}
scala 复制代码
public class Dog extends Animal {
    @Override
    public void makeSound() {
        System.out.println("汪汪汪");
    }
}

狗需要自己才能发出叫声,抽象类只是给了它身体。

抽象类 是一个约定好你会是谁的半成品。 你不能 new 它,因为它不完整。但它替你想好了:你该有哪些共同的东西。

补充:只要类里面包含抽象方法,类就必须是abstract;但抽象类不一定非要包含抽象方法。

第二章 接口:我能做到的事

接口:是一个技能树

抽象类一个更倾向于给你一个身份,它是个狗,继承着动物这个爸爸。

但是他不能再继承会游泳的海豚这个爸爸。

而这就是接口可以做到的事情了。 他不看你是是谁,他只看你会不会。

csharp 复制代码
// 一个会游泳的技能
public interface Swimmable {
    void swim();
}

一个类,只可以有一个父类,但是可以用无数个接口(技能)

scala 复制代码
public class Dog extends Animal implements Swimmable {
    @Override
    public void makeSound() {
        System.out.println("汪汪汪");
    }

    @Override
    public void swim() {
        System.out.println("狗刨式游泳");
    }
}

接口是一个我能做到的承诺。 我不在乎你是什么,只要你承诺做得到,你就能实现我。

第三章 一张表,看清

抽象类(abstract class) 接口(interface)
回答的问题 你是什么? 你能做什么?
生活类比 动物、人、车 会飞、会游泳、会充电
关键字 extends(只能一个) implements(可以很多个)
能 new 吗 不能 不能

第四章: 一句话总结

抽象类说你是谁(只能认一个父类),接口说你会啥。(可以有无数个技能)。

相关推荐
旋律4141 小时前
String、StringBuilder、StringBuffer:三个"字符串",到底区别在哪?
java·后端
一条泥憨鱼1 小时前
【Redis | 黑马点评】基于Redis的消息队列 | stream消息队列 源码解读
java·数据库·redis·缓存·lua
aibo8603082 小时前
基于 Spring Boot + Vue3 的博物馆藏品管理系统设计与实现
java·spring boot·后端
fanruitian2 小时前
python 进程 线程
java·前端·python
\光辉岁月/2 小时前
javaSE8-新特性-Stream&Option
java·stream·option
zzu123zsw2 小时前
把条件校验收敛到枚举接口:Spring Boot 统一断言模式与零污染异常切面工程化
java·spring boot·后端·架构设计
SL_staff2 小时前
计划系统落地难?从开发者视角重构执行入口体验
java·开源·全栈
鬼手点金2 小时前
单轮对话:最简单的 API 调用
java·服务器·前端·javascript·react.js·servlet·tomcat
牛牛牌蜡笔小新2 小时前
Java-常用类库
java·开发语言