浅谈 Java 三大特性的意义|设计模式基础

简介: Java 的三大特性,继承、封装和多态大家应该都有所耳闻。本篇短文,浅谈下这几种特性的意义所在。

Java 的三大特性,继承、封装和多态大家应该都有所耳闻。本篇短文,浅谈下这几种特性的意义所在。

前置知识

  • 熟悉面向对象语言
  • 有使用过三大特性的经验

封装

关于封装,其最简单的用法就是,在一个类中把不需要给他人修改和展示的属性或者方法隐藏,其余则的公开。

其作用有几点:

  1. 防止被不熟悉该业务的同事修改,导致数据出错或者功能出错
  2. 让相关类的调用更加简单清晰,只让可调用的方法被暴露,可减小调用者的使用负担

继承

多数面向对象语言中都有继承的特性,这是一个 is-a 的特性。

继承的意义有以下几点:

  1. 解决代码复用问题
  2. 父类、子类与现下生活相似,有结构美

但是过度使用继承,也会使得代码可读性和可维护性变差。提倡 多组合,少继承

多态

多态是使用继承或者基于接口类,来使用子类替换父类

使用多态的几个意义有:

  1. 提高代码的复用性和可拓展性
  2. 隐藏代码功能的具体实现,让代码的调用更加方便
  3. 让代码更加解耦

多态是优雅的设计模式的基础,笔者在前面的封装框架一文中,也用到了多态的特性


抽象?

抽象是特性么?抽象在java中是一个特性,但是即使 java 不提供该特性,事实上我们调用函数,也是在实现该特性。

Java 中的抽象类 或者 接口类,都是包含抽象的特性的用法。使用抽象,能让我们不关注于代码本身,而是关注其功能。

为何标题打了 ? ,是抽象不包含于三大特性之中,但是抽象的的应用应该是在编码的全方面的。我们只去调用类的 public 方法可以看作是抽象,将类名显示一个泛化的功能也是抽象。

本文是 设计模式 的基础,了解设计模式不能空泛化,要知晓为什么,怎么做


相关文章
|
18天前
|
设计模式 Java 开发者
设计模式揭秘:Java世界的七大奇迹
【4月更文挑战第7天】探索Java设计模式:单例、工厂方法、抽象工厂、建造者、原型、适配器和观察者,助你构建健壮、灵活的软件系统。了解这些模式如何提升代码复用、可维护性,以及在特定场景下的应用,如资源管理、接口兼容和事件监听。掌握设计模式,但也需根据实际情况权衡,打造高效、优雅的软件解决方案。
|
19天前
|
设计模式 存储 Java
23种设计模式,享元模式的概念优缺点以及JAVA代码举例
【4月更文挑战第6天】享元模式(Flyweight Pattern)是一种结构型设计模式,旨在通过共享技术有效地支持大量细粒度对象的重用。这个模式在处理大量对象时非常有用,特别是当这些对象中的许多实例实际上可以共享相同的状态时,从而可以减少内存占用,提高程序效率
35 4
|
18天前
|
设计模式 监控 Java
设计模式 - 观察者模式(Observer):Java中的战术与策略
【4月更文挑战第7天】观察者模式是构建可维护、可扩展系统的关键,它在Java中通过`Observable`和`Observer`实现对象间一对多的依赖关系,常用于事件处理、数据绑定和同步。该模式支持事件驱动架构、数据同步和实时系统,但需注意避免循环依赖、控制通知粒度,并关注性能和内存泄漏问题。通过明确角色、使用抽象和管理观察者注册,可最大化其效果。
|
22小时前
|
Java
【Java基础】详解面向对象特性(诸如继承、重载、重写等等)
【Java基础】详解面向对象特性(诸如继承、重载、重写等等)
5 0
|
1天前
|
设计模式 算法 Java
[设计模式Java实现附plantuml源码~行为型]定义算法的框架——模板方法模式
[设计模式Java实现附plantuml源码~行为型]定义算法的框架——模板方法模式
|
1天前
|
设计模式 JavaScript Java
[设计模式Java实现附plantuml源码~行为型] 对象状态及其转换——状态模式
[设计模式Java实现附plantuml源码~行为型] 对象状态及其转换——状态模式
|
1天前
|
设计模式 存储 JavaScript
[设计模式Java实现附plantuml源码~创建型] 多态工厂的实现——工厂方法模式
[设计模式Java实现附plantuml源码~创建型] 多态工厂的实现——工厂方法模式
|
1天前
|
设计模式 Java Go
[设计模式Java实现附plantuml源码~创建型] 集中式工厂的实现~简单工厂模式
[设计模式Java实现附plantuml源码~创建型] 集中式工厂的实现~简单工厂模式
|
1天前
|
设计模式 存储 前端开发
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式
|
6天前
|
机器学习/深度学习 Java API
Java8中的新特性
Java8中的新特性