Java基础 -- 面向对象特性

简介: Java基础 -- 面向对象特性

🍕前面的话🥞

今天状态不是很好,那么就想着把前面的 Java 基础拿出来翻看一下。顺便复习一下。因此,也就写下了这篇文章。当然是由感而发啊。如果有哪些不足的地方还请小伙伴们细细指出嗷。其实现在大部分的人都是只注重编程技巧或怎样编程上,当然一些基础概念也是十分的重要的。正所谓 基础不牢,地动山摇。在这一片文章中,我将从这两个方面去进行阐述喽。

👩‍💻博客主页: 崇尚学技术的科班人的博客主页
✨欢迎关注🖱点赞🎀收藏⭐留言✒
🔮本文由 崇尚学技术的科班人 原创,csdn首发!
😘系列专栏:java
🀄如果觉得博主的文章还不错的话,请三连支持一下博主哦

在这里插入图片描述

🥧面向对象特性

其实当人们谈论到 Java 的时候,大多数都会直接谈论到它是一门面向对象的编程语言。那么如果我问一个问题 Java 面向对象的三大特性是什么?。我相信大家都能够答出来,那么就是 封装、继承、多态。但是要你去详细介绍一下这三个特性的时候,又有多少人能够很快而有准确的回答出来呢?所以在这个飞速发展的时代,在这个快餐式学习横行的时代,我们有时候需要慢下来、静下来去沉淀一下了,去慢慢地、踏实地学习一下了。

那么下面我将从代码和概念两个角度进行深度讲解 Java 的面向对象特性。

🍦代码例子

  • Coffee抽象类
public abstract class Coffee {

    public abstract String getName();

    // 1. 加糖
    public void addSugar(){
        System.out.println("加糖");
    }

    // 2. 加奶
    public void addMilk(){
        System.out.println("加奶");
    }
}
AI 代码解读
  • LatteCoffee子类
public class LatteCoffee extends Coffee {
    @Override
    public String getName() {
        return "拿铁咖啡";
    }
}
AI 代码解读

想必大家对这两个代码例子应该已经熟悉的不要再熟悉了吧,这个 咖啡 作为抽象父类,其中有一个获取对应对象的抽象方法 -- getName()

  • 为什么要设计这么一个抽象方法呢?

其实作为一个抽象类呀,就比如说上面这个 咖啡 抽象类,它只是 咖啡 的一个抽象总称。所以说,咖啡的话那么就会有很多种类的咖啡。比如说,美式咖啡、拿铁咖啡等。那么我们需要根据它的名字进行判别,就通过这么一个抽象方法,当字类进行继承对应的父类的时候,那么需要对其进行重写。那么就实现了不同咖啡的不同标识了。


其上,这两段代码就涉及到了面向对象的两大特性:继承和多态。上面这样介绍一下,方便一下没有 Java 基础的同学也能看懂,如果有一定 Java 的同学的话,那么就复习一下喽。

虽然例子很简单,但是运用到了其两大重要概念。下面我将从三个特性展开详细介绍。

🍭面向对象和面向过程的区别?

我们都知道 c 语言的话,它是面向过程的;而 Java 语言的话,它是面向对象的。那么它们两者的区别是什么呢?

面向过程

  • 优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
  • 缺点:没有面向对象易维护、易复用、易扩展。

面向对象

  • 优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护。
  • 缺点:性能比面向过程低。

🧀 封装

如果在面试中,你被面试官问到了 你来详细介绍一下封装是什么意思?。你会如何回答呢?可能会有一些小伙伴会说,那不就是将一段代码进行封装成一个函数或类吗?

如果你是这样回答的话,其实 get 到了一点边了,但是你就像是一个没有学过 Java 语言的人一样,换句话说就是回答的不够专业。我这里就给出标答来了。

  • 封装:封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏

🍦继承

还是这么说呀,如果叫你详细的介绍一下肯定都是描述不太准确的。那么这就是基础不太扎实了。肯定有很多人会这样描述这个概念,那不就是 子类继承父类呀这回答的也太不专业了吧,一看就是圈外人

标答:

  • 继承:继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。通过继承创建的新类称为“子类”或“派生类”,被继承的类称为“基类”、“父类”或“超类”。

🥡多态

我这里就不多加赘述了。

标答:

  • 多态性:它是指在父类中定义的属性和方法被子类继承之后,可以具有不同的数据类型或表现出不同的行为,这使得同一个属性或方法在父类及其各个子类中具有不同的含义。

其实也就是如上面我所举出的例子来说的话,也就是咖啡父类定义了一个抽象方法,他定义的是一个规范,如果子类继承它的话,不同的子类将会表现出不同的行为,那么就是不同的咖啡品种会有不同的名字。这也就是说子类需要重写父类的相关方法进行表现出不同的属性和行为。

  • 多态的三要素
  1. 继承:在多态中必须存在有继承关系的子类和父类。
  2. 重写:子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法。
  3. 向上转型:在多态中需要将子类的引用赋给父类对象,只有这样该引用才既能可以调用父类的方法,又能调用子类的方法。

当然上面介绍到的重写也只是多态实现的一种方式,多态的实现方式介绍如下:

  • 重写:重写发生在子类与父类之间, 重写方法返回值和形参都不能改变,与方法返回值和访问修饰符无关,即重载的方法不能根据返回类型进行区分。即外壳不变,核心重写!
  • 重载:重载 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。最常用的地方就是构造器的重载。

编写不易,如果你感觉对你有帮助的话,请你三连支持,后面的文章会一点点更新。

在这里插入图片描述

目录
打赏
0
0
1
0
7
分享
相关文章
|
1月前
|
Java 17 + 特性与现代开发技术实操应用详解
本指南聚焦Java 17+最新技术,涵盖模块化开发、Record类、模式匹配、文本块、Stream API增强、虚拟线程等核心特性,结合Spring Boot 3与Micronaut框架实战。通过实操案例解析现代Java开发技术栈,包括高性能并发编程、GraalVM原生编译及开发工具链配置。同时梳理面试高频考点,助力掌握Java新特性和实际应用,适合学习与项目实践。代码示例丰富,附带完整资源下载链接。
262 0
|
2月前
|
【高薪程序员必看】万字长文拆解Java并发编程!(5):深入理解JMM:Java内存模型的三大特性与volatile底层原理
JMM,Java Memory Model,Java内存模型,定义了主内存,工作内存,确保Java在不同平台上的正确运行主内存Main Memory:所有线程共享的内存区域,所有的变量都存储在主存中工作内存Working Memory:每个线程拥有自己的工作内存,用于保存变量的副本.线程执行过程中先将主内存中的变量读到工作内存中,对变量进行操作之后再将变量写入主内存,jvm概念说明主内存所有线程共享的内存区域,存储原始变量(堆内存中的对象实例和静态变量)工作内存。
101 0
GraalVM 24 正式发布阿里巴巴贡献重要特性 —— 支持 Java Agent 插桩
阿里巴巴是 GraalVM 全球顾问委员会的唯一中国代表,阿里云程序语言与编译器团队和可观测团队合作实现了 GraalVM 应用的无侵入可观测能力,并在 ARMS 平台上线了该功能。目前在 GraalVM 24 中发布的是支持 Java agent 的第一步,其余能力将在 GraalVM 的后续版本中陆续发布。
303 21
|
4天前
|
Java 17 及以上版本核心特性在现代开发实践中的深度应用与高效实践方法 Java 开发实践
本项目以“学生成绩管理系统”为例,深入实践Java 17+核心特性与现代开发技术。采用Spring Boot 3.1、WebFlux、R2DBC等构建响应式应用,结合Record类、模式匹配、Stream优化等新特性提升代码质量。涵盖容器化部署(Docker)、自动化测试、性能优化及安全加固,全面展示Java最新技术在实际项目中的应用,助力开发者掌握现代化Java开发方法。
21 1
Java 8 + 特性及 Spring Boot 与 Hibernate 等最新技术的实操内容详解
本内容涵盖Java 8+核心语法、Spring Boot与Hibernate实操,按考试考点分类整理,含技术详解与代码示例,助力掌握最新Java技术与应用。
25 2
|
5天前
|
Java 17 新特性与微服务开发的实操指南
本内容涵盖Java 11至Java 17最新特性实战,包括var关键字、字符串增强、模块化系统、Stream API、异步编程、密封类等,并提供图书管理系统实战项目,帮助开发者掌握现代Java开发技巧与工具。
18 0
Java:面向对象
本文介绍了Java编程中的核心概念,包括包的命名规范与自动导入机制、构造方法的特点与使用、`this`和`super`关键字的作用、继承的基本规则、访问权限的设置、封装的意义、多态的实现原理以及`static`关键字的用法。通过详细解析每个知识点,并结合代码示例,帮助读者深入理解Java面向对象编程的核心思想与实践技巧。内容适合初学者及进阶开发者学习参考。
java面试-基础语法与面向对象
本文介绍了 Java 编程中的几个核心概念。首先,详细区分了方法重载与重写的定义、发生阶段及规则;其次,分析了 `==` 与 `equals` 的区别,强调了基本类型和引用类型的比较方式;接着,对比了 `String`、`StringBuilder` 和 `StringBuffer` 的特性,包括线程安全性和性能差异;最后,讲解了 Java 异常机制,包括自定义异常的实现以及常见非检查异常的类型。这些内容对理解 Java 面向对象编程和实际开发问题解决具有重要意义。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问