什么是抽象类与接口

抽象类与接口

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

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

抽象类,是一个半成品。

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

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 吗 不能 不能

第四章: 一句话总结

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

相关推荐
SL_staff1 小时前
私有化低代码:面向强监管行业的可控数字化实践
java·低代码
三翼鸟数字化技术团队2 小时前
高性能存储引擎RocksDB:原理与Java生态实践
java
SL_staff2 小时前
JVS-APS有限产能建模的七个刚性支点:面向产线真实约束的技术实现解析
java·开源·全栈
特立独行的猫A2 小时前
少 3 个环节、少 1 次 ABI、少 3500 行代码:cj-tauri 与 Ionic/Capacitor 的鸿蒙桥接机制对比
java·后端·python
学长毕设2 小时前
基于SpringBoot的高校后勤报修管理系统-附源码
java·spring boot·后端
特立独行的猫A3 小时前
cj-tauri vs Rust/Tauri 同款播放器实测:编译 21 秒 vs 11 分钟,磁盘 12 MB vs 1.2 GB
java·后端·python
杨凯凡3 小时前
Spring AI RAG 实战:向量检索、租户过滤、引用溯源与防幻觉边界
java·人工智能·spring
小科先生4 小时前
Java springboot调用数据库的基本流程
java·数据库·spring boot
秋饼5 小时前
GPT-Live 全双工语音 API Java 服务端落地实战:事件协议、会话恢复与生产踩坑
java·ai·技术分享·后端开发
SL_staff5 小时前
为什么企业级自动化不能只靠AI编排?——逻辑引擎在确定性业务场景中的不可替代性
java·开源·产品