Java基础巩固 -- 面向对象

Java基础巩固 – 面向对象

简介:博主本人由于在毕业前忙于找工作,因此选择了Java后端开发,但学习过程比较碎片化,并没有进行系统性学习。本章博客将会系统性重温Java的一些基础知识和概念。

1.面向对象

1.1 概念

面向对象是一种编程思想,其基本特征分别为 封装继承多态。其核心就是将事物看做一个整体,从事物的特征(属性)以及行为(方法)两个方面对事物进行描述。

1.2 对比

编程语言有面向对象如Java、Python等也有面向过程的C,其对比如下:

面向过程面向对象
设计思路自上而下、层次化、分解自下而上、对象化、综合
程序单元函数模块对象
设计方法算法+数据结构数据+方法
优点相互独立、代码共享,性能较优接近人的思维方式、方便使用、易维护、复用以及扩展
缺点维护困难执行效率较低

相较于面向过程,面向对象可以不用了解具体实现过程,只需要调用其中的功能即可。

1.3 面向对象三大核心

  • 可重用性:代码可以重复使用,减少代码量,提升开发效率
  • 可扩展性:可以在系统中容易地加入新功能
  • 客观理性:将功能与数据结合,方便管理

1.4 抽象

抽象就是把同一类事物中共有的特征和行为进行抽取、归纳、总结。


2.Java面向对象

2.1 类

2.1.1 概念

用于描述一类具有相同特征(属性)和行为(方法)的对象

2.1.2 组成

  • Java中使用class来定义类,在类中包含 成员属性成员方法
public class 类名 {//成员属性//成员方法
}
  • 类的成员
    • 成员变量:成员变量位于类中并在方法之外。
    • 成员方法:和之前定义的方法几乎是一样的,只不过把static关键字去掉

2.1.3 关系

类是对象的抽象,类的实例化是对象

2.2 对象

2.2.1 概念

对象是系统中用于描述客观事物的实体,是构成系统的基本单位。

  • 实例化流程
类名 对象名 = new 类名();
  • 成员变量
数据类型默认值
byte0
short0
int0
long0
float0.0
double0.0
booleanfalse
char空字符
引用类型null

2.3 成员变量

成员变量又是全局变量,成员变量定义在方法外部,类的内部。使用范围为这个类。在Java虚拟机中成员变量将会存储在 堆内存 中。

2.4 局部变量

局部变量位于方法中或某个语句块内部,适用范围仅限方法内或语句块中,且需要初始值。局部变量保存在 栈内存 中。

2.5 成员方法

  • 创建流程:
访问修饰符 返回值类型 方法名称(参数列表){方法体
}

成员变量可以直接在成员方法中使用,但是main方法中如果调用成员变量和方法必须通过对象.属性名\方法名(参数列表)的形式来调用。而成员方法之间的调用,直接写方法名(参数列表)即可。

2.6 构造方法

对象实例化后最先调用构造方法,可以创建对象,并且初始化成员变量。

  • 方法和类名相同
  • 无任何返回值
  • 不能被static等关键字修饰
  • 可以重载方法
  • 当一个类中没有写构造方法时,系统会默认给该类一个默认的无参构造方法。当自己定义构造方法后默认的构造方法就不存在了。

2.7 this关键字

this关键字表示调用当前对象的变量。

public class Student{//成员变量String name;int age;int classNum;public Student(String name,int age,int classNum){    //s1调用了构造方法,所以这里的this代表s1对象this.name = name; //成员变量name=局部变量namethis.age = age;this.classNum = classNum;}public static void main(String[] args){Student s1 = new Student("张三",18,1);System.out.println(s1.name);//打印 张三}
}

2.8 封装

封装是将代码及其处理的数据绑定在一起的方式,该机制的存在保证了程序和数据不受外部干扰。

  • 封装的目的在于保护信息,保证数据安全
  • 封装包括属性封装和方法封装
  • Java 提供了私有和公有的访问模式,类的公有接口代表外部的用户应该知道或可以知道的每件东西,私有的方法数据只能通过该类的成员代码来访问, 封装不是绝对的封装,如果想要访问封装起来的数据,可以通过指定的入口即可
  • 属性和方法封装相辅相成、密不可分。

2.9 继承

程序中的继承性是指子类拥有父类的全部特征和行为,这是类之间的一种关系。

  • 继承特点:
    • 继承需要有层次结构并且具有一定可传递性。
    • 子类将会继承父类的所有属性和方法,但是不包括 私有属性构造方法
    • 子类在继承父类时可以实现自己的属性和方法。
    • Java不支持多继承,即一个子类只能继承一个父类,但一个父类可以被多个子类继承。

2.9.1 super关键字

表示当前父类的引用,并且该关键字只能出现在有继承关系的子类中
-用法:

  • super.属性名/super.方法名:表示父类的属性和方法,和子类中的属性或方法 重名 时使用。
  • super(参数列表):出现在子类构造方法的第一句代码。

2.10 多态

多态就是同一函数在不同类中有不同的表现

  • 面向对象的多态性,一个接口多个方法
  • 多态性体现在父类中定义的属性和方法被子类继承后,可以具有不同的属性或表现方式。
  • 多态性允许一个接口被多个同类使用,弥补了单继承的不足。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/49303.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微服务概念篇-服务提供者/服务消费者

微服务概念篇-服务提供者/服务消费者 提示:以下是本篇文章正文内容,下面案例可供参考 一、服务提供者是什么? 提供接口给其他微服务进行调用的服务称之为服务提供者 二、服务消费者是什么? 调用其他服务的接口的服务称之为服务消费者 三…

学习网络系统的心得体会

网络系统 零拷贝 磁盘是计算机系统中读写速度最慢的的硬件之一,而零拷贝技术是用于提高文件传输性能的,通过减少上下文切换次数与数据拷贝的次数从而提高传输性能。 操作系统中IO的流程 大体流程 收到IO请求由用户态切换到内核态,CPU发送…

【vueUse库Time模块各函数简介及使用方法--全篇】

vueUse库是一个专门为Vue打造的工具库,提供了丰富的功能,包括监听页面元素的各种行为以及调用浏览器提供的各种能力等。其中的Browser模块包含了一些实用的函数,以下是这些函数的简介和使用方法: vueUse库Sensors模块各函数简介及使用方法 vueUseTime函数1. useDateFormat…

# Redis 入门到精通(七)-- redis 删除策略

Redis 入门到精通(七)-- redis 删除策略 一、redis 删除策略–过期数据的概念 1、Redis 中的数据特征 Redis 是一种内存级数据库,所有数据均存放在内存中,内存中的数据可以通过TTL指令获取其状态。 XX :具有时效性…

Linux下git入门操作

0.创建仓库 可以按这个配置来,.gitignore中存放了上传时忽略的文件类型后缀。 1.clone仓库 在gitee上创建好仓库,点击克隆/下载, 复制地址fyehong/Linux_notes 。 在所需的文件夹中放置仓库。比如我在文件夹lesson9下存储仓库。就在less…

C# 与C++ cli

cli CLI(Command Line Interface)是一种通过命令行界面与计算机系统进行交互的方式。它提供了一种以文本形式输入命令和接收系统输出的方法,用于执行各种操作和管理计算机系统。以下是CLI的详细解释: 一、定义与基本概念 定义&…

Linux系统下的DevOps工具链:从CI到CD

Linux系统下的DevOps工具链覆盖了从持续集成(CI)到持续部署(CD)的全过程,以下是关键环节及其常用工具: 1.版本控制 (SCM) •Git: 管理代码版本,分支合并,是DevOps流程的基础。 2.…

Android中Intent和IntentFilter

目录 一 概述二 使用2.1 显式调用2.2 隐式调用2.3 IntentFilter三个属性2.3.1 action2.3.2 catagory2.3.3 data 一 概述 intent是意图,intentFilter是意图过滤器。使用intent,可以启动activity、service、broadcastReceiver等。 二 使用 2.1 显式调用…

jenkins面试题全集

1. 简述什么是Jenkins ? Jenkins是一个开源的持续集成的服务器,Jenkins开源帮助我们自动构建各类项目。 Jenkins强大的插件式,使得Jenkins可以集成很多软件,可以帮助我们持续集成我们的工程项目,对于我们测试来说&…

机车 - 凯旋(Triumph)Street Triple 765系列的R版和RS版的区别

凯旋(Triumph)Street Triple 765系列的R版和RS版有一些显著的差异,主要体现在性能、配置和价格方面。选择哪一个版本取决于你的骑行需求、预算和骑行经验。以下是两者的主要区别和一些建议: 差异点 1. 性能: * 发动机…

AI学习指南机器学习篇-t-SNE的优缺点

AI学习指南机器学习篇-t-SNE的优缺点 在机器学习领域,t-SNE(t-Distributed Stochastic Neighbor Embedding)是一种非常强大且流行的降维算法。它被广泛应用于数据可视化、特征提取等任务中。然而,与其他算法一样,t-SN…

Python酷库之旅-第三方库Pandas(041)

目录 一、用法精讲 136、pandas.Series.ne方法 136-1、语法 136-2、参数 136-3、功能 136-4、返回值 136-5、说明 136-6、用法 136-6-1、数据准备 136-6-2、代码示例 136-6-3、结果输出 137、pandas.Series.eq方法 137-1、语法 137-2、参数 137-3、功能 137-4、…

医疗信息化之PACS系统源码,C#医学影像系统源码,成熟在用稳定运中

C#语言开发的一套PACS系统源码,C/S架构,成熟稳定,多家大型综合医院应用案例。自主版权,支持二次开发,授权后可商用。 医学影像存储与传输系统是针对数据库存储、传输服务、图像处理进行了优化,存储更安全、传输更稳定、…

Ethernet/IP转CC-Link IEFB协议转化网关(通讯解决方案)

怎么样把Ethernet/IP和CC-Link IEFB网络通讯连接起来呢?最近有很多朋友咨询这个问题,在这里统一为大家详细说明一下。其实有一个设备可以很轻松地解决这个问题,名为YC-EIP-TCP,下面是详细信息。 一,设备主要功能 1、YC-EIP-CCL…

ios 15-16手机绕过ssl验证(抓取app上的https包)

绕过ssl验证的基本流程 前提概要:为什么你的charles抓不了https包 ios 越狱ios rootful安装ios 越狱商店sileo安装substitute越狱商店安装SSL Kill Switch3 全流程坑点巨多,博主亲身踩坑,务必按着步骤来 准备工作 type b to c 的数据线苹果…

【ffmpeg命令入门】实现画中画

文章目录 前言画中画是什么画中画的外观描述效果展示为什么要用画中画应用场景示例 使用FFmpeg添加画中画示例命令参数解释调整嵌入视频的位置调整嵌入视频的大小处理音频 总结 前言 FFmpeg 是一款强大的多媒体处理工具,广泛用于音视频的录制、转换和流处理。它不仅…

Vue的安全性:防范XSS攻击与安全最佳实践

引言 随着Web应用的普及,前端安全问题日益受到重视。Vue作为当下流行的前端框架,其安全性也成为开发者关注的焦点。跨站脚本攻击(XSS)是常见的Web安全漏洞之一,本文将讨论如何在使用Vue时防范XSS攻击,并分享其他Vue中的安全最佳实践。 什么是XSS攻击? XSS攻击是一种将…

Dockerfile制作部署wordpress-6.6

目录 一. 环境准备 二. 准备对应的配置文件 三. 编写Dockerfile 四. 构建镜像 五. 配置MySQL 六. 安装wordpress 七. 扩展 一. 环境准备 localhost192.168.226.25 rocky_linux9.4 Docker version 27.0.3 关闭防火墙和selinux,进行时间同步。 安装docker…

RabbitMQ普通集群搭建指南

RabbitMQ普通集群搭建指南 本文已经完全迁移至,www.geekery.cn 后续不在此更新 目标架构 本次搭建的目标是构建一个由三个节点组成的RabbitMQ集群,节点信息如下: rabbit02: IP地址 192.168.10.132rabbit03: IP地址 192.168.10.133rabbit04:…

LLM推理优化

vLLM的Paged Attention: vLLM: Easy, Fast, and Cheap LLM Serving with PagedAttention | vLLM Blog S-LoRA: S-LoRA: Serving Thousands of Concurrent LoRA Adapters (arxiv.org)