墨风如雪博客

  • 源码小店
  • 传家宝VPS
让AI使用变得如此简单
  1. 首页
  2. java
  3. 正文

抽象类和接口的区别(通俗易理解)

2023年 5月 20日 310点热度 0人点赞 0条评论

一、抽象类

1.1 抽象类概念:

抽象类是一种不能够被实例化的类,它存在的目的是为了被子类继承和实现。抽象类可以包含抽象方法,但是不一定必须包含抽象方法。

JAVA代码示例:

public abstract class Animal {
   public abstract void makeSound();
}

1.2 抽象类特点:

  • 抽象类不能被实例化,必须被子类继承和实现。
  • 抽象类可以包含抽象方法和非抽象方法。
  • 抽象类可以有构造方法,但是不能被用来实例化抽象类。
  • 如果一个类继承了一个抽象类,那么它必须实现抽象类中的所有抽象方法,或者继续声明为抽象类。

JAVA代码示例:

public abstract class Animal {
   public void eat() {
      System.out.println("Animal is eating");
   }

   public abstract void makeSound();
}

public class Dog extends Animal {
   public void makeSound() {
      System.out.println("Woof");
   }
}

1.3 抽象类存在价值:

  • 抽象类可以提供一个模板,让子类来实现具体的方法。
  • 抽象类可以约束子类的行为,保证子类的一致性。
  • 抽象类可以隐藏实现细节,提供更高的抽象层次。

二、接口

2.1 接口的概念:

接口是一种抽象类型,它描述了类或者对象可以做什么,而不是怎么做。接口定义了一组方法签名,但是没有提供方法的实现。

JAVA代码示例:

public interface Animal {
   public void makeSound();
}

2.2 接口的特点:

  • 接口中的方法都是抽象方法,不能包含实现。
  • 接口中的字段都是常量,不能被修改。
  • 接口不能被实例化,必须被类实现。
  • 一个类可以实现多个接口。
  • 接口中的方法默认为public,不能为private或protected。

JAVA代码示例:

public interface Animal {
   public void makeSound();
}

public class Dog implements Animal {
   public void makeSound() {
      System.out.println("Woof");
   }
}

2.3 接口存在价值:

  • 接口可以实现多态,一个类可以实现多个接口。
  • 接口可以约束类的行为,保证类的一致性。
  • 接口可以隐藏实现细节,提供更高的抽象层次。

三、接口和抽象类的关系

3.1 接口和抽象类相同点:

  • 接口和抽象类都不能被实例化,只能被子类或类实现。
  • 接口和抽象类都可以约束子类或类的行为,保证子类或类的一致性。
  • 接口和抽象类都可以隐藏实现细节,提供更高的抽象层次。

3.2 接口和抽象类的区别:

  • 抽象类可以包含方法的实现,但是接口不能。
  • 一个类只能继承一个抽象类,但是可以实现多个接口。
  • 接口中的方法默认为public,不能为private或protected,而抽象类中的方法可以有不同的访问修饰符。
  • 抽象类可以拥有构造方法,而接口不能。

扩展知识点:

  • 接口的实现可以在运行时动态地改变,而抽象类的继承关系是在编译时静态确定的。
  • 接口可以被用来定义事件、回调函数等,而抽象类则不太适合这种用法。
  • 接口的设计应该是更加关注行为,而抽象类的设计则更加关注状态和行为的组合。
本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: java JDK 三大特性 基础 抽象类 接口
最后更新:2023年 5月 21日

墨风如雪

一个热爱生活,热爱分享的程序员

打赏 点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

墨风如雪

一个热爱生活,热爱分享的程序员

最新 热点 随机
最新 热点 随机
Kimi K2.5开源:自带百人众包团队,月之暗面重新定义生产力 告别修图软件的图层噩梦,腾讯混元3.0让AI学会了“思考” 参数仅100亿却硬刚千亿巨头:阶跃星辰Step3-VL-10B凭什么封神? 腾讯CodeBuddy 2.0:从“副驾驶”到“全栈合伙人”的进化 97毫秒极致响应!Qwen3-TTS开源,重新定义语音生成的“速度与激情” 2026开年王炸:文心5.0带着2.4万亿参数和原生全模态来了
闭源的墙角被挖塌了?GLM-4.7登顶开源王座,这回真不兴嘲讽仅需1GB内存!腾讯混元MT1.5开源,让手机翻译彻底告别云端依赖十天谈下二十亿美金:Meta豪掷千金买下的中国AI天才,到底凭什么?智谱ZCode上手:把Claude和Gemini装进桌面,编程还能这么玩?告别延迟!通义开源Fun-Audio-Chat,这才是我们要的语音AI这可能是最懂人话的AI:阿里MAI-UI让手机自动驾驶成真
谷歌截胡OpenAI?揭秘月费250刀的“奥数金牌”AI到底强在哪 讯飞星火这次不玩虚的,新版X1直指AI的“无人区” 国产大模型安全新突破:DeepSeek-R1-Safe,平衡木上的舞者 像P图一样改视频?可灵O1来了,视频生成领域的“瑞士军刀” iOS快捷指令×DeepSeek:三步打造智能自动化工作流 Java线程池参数和调优
标签聚合
教程 算法 spring AI 设计模式 deepseek java 大模型

COPYRIGHT © 2023 墨风如雪博客. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang