Java面向对象 一

系列文章目录

Java面向对象 二-CSDN博客

Java面向对象 三-CSDN博客


目录

系列文章目录

前言

一、初步认识面向对象

1.类和对象的简单理解

2.类的构成

二、类的实例化 

1.对象的创建

2.对象的初始化

三、this引用的作用

四、构造方法

1.构造方法的提供

2.对象的构造

3.构造方法的重载

4.this.() 调用构造方法

五、封装

1. 面向对象的特征

2. 权限关键字 

3. 包的概念

4.封装的概念和意义

六、static 成员

1. static 修饰成员变量

2. static 修饰成员方法

3. 静态成员的特性及访问方式

4.静态成员变量的初始化

七、代码块


前言

java 是一门面向对象的编程语言,本文介绍 java 面向对象编程的基础内容。


一、初步认识面向对象

1.类和对象的简单理解

java 是一门面向对象的编程语言(Object Oriented Program,简称 OOP)。

对象的产生依赖于类,类可以理解为盖房子用的图纸,对象就是根据图纸建出来的房子。

2.类的构成

类中包含属性(成员变量/字段)和方法(成员方法);

成员属性:定义在类内部,方法外部的变量;

成员方法:是写在类里面的函数,用来表示对象的行为;

二、类的实例化 

1.对象的创建

可以通过 new 关键字创建对象,使用类创建对象的过程,就是类的实例化;

2.对象的初始化

可以通过引用访问对象的属性和方法:具体是指“对象名.属性/方法名“的方式来访问;

默认初始化:对象的属性在没有赋值的时候,引用类型的默认值是 null,简单类型就是 0;

注意:局部变量必须初始化才能调用,对象属性/成员变量不需要。

三、this引用的作用

this 引用指向当前对象(成员方法运行时,调用该成员方法的对象);

this 只能在成员方法中使用,通过 this 可以访问对象的成员变量,但静态的成员变量不支持。

this.() :用于调用当前类中的构造方法,只能在构造方法中使用,并且只能在第一行;

this.属性: 用于访问对象的属性;

this.方法名: 用于访问对象的方法;

四、构造方法

1.构造方法的提供

当一个类中没有任何一个构造方法的时候,java 会自动提供一个没有参数的构造方法;

当一个类中有构造方法,Java 就不会提供构造方法了。

2.对象的构造

完成一个对象的构造分两步:1,给对象分配空间;2,调用合适的构造方法。

构造方法只负责对对象的成员进行初始化,不负责给对象开辟空间;

3.构造方法的重载

构造方法没有返回值类型,方法名和类名必须相同,定义不同参数可以构成构造方法的重载;

重载:方法名相同,参数列表不同的多个方法构成方法的重载。

4.this.() 调用构造方法

this.() 可以调用当前类中的其它构造方法,只能在构造方法中使用,并且只能在第一行;

使用 this 调用类中的属性和普通方法不需要放在第一行。

五、封装

1. 面向对象的特征

面向对象的三大特征:封装,继承,多态;

2. 权限关键字 

private: 使用该关键字修饰的属性或者方法,只能在同一包下的同一类中访问;

default:default 不是权限关键字,什么关键字都不加就是 default 权限,同一包中的同一类或者不同类可以访问,也叫做包访问权限;

protected: 权限扩大到不同包中的子类可以访问,访问时需要用到 super 关键字;

public: 权限扩大到不同包中的非子类也可以访问;

3. 包的概念

为了更好得管理类,把多个类收集在一起成为一组,称为软件包;

import:可以使用 import 关键字将包导入;

包名:通常使用公司的域名,类如 com.baidu.www

常见的包:

java.lang: 系统常用基础类,由编译器自动导入;

java.lang.reflect: java 反射变成包;

java.net: 网络编程开发包;

java.sql: 数据库开发支持包;

java.util: java 提供的工具程序包,包含 java 集合类,非常重要;

java.io: I/O 编程开发包;

4.封装的概念和意义

封装就是对类的成员进行隐藏,通过关键字 private, 只对类外提供公开的接口;

封装的意义是可以隐藏类的实现细节,从而达到安全性;

六、static 成员

1. static 修饰成员变量

static 修饰成员变量:静态成员变量,也叫做类变量,静态变量存在于 java 虚拟机内存的方法区;

static 成员变量的生命周期:随着类加载创建,随着类卸载销毁;

2. static 修饰成员方法

static 修饰成员方法:静态成员方法,也叫做类方法;

3. 静态成员的特性及访问方式

静态成员不属于某个对象,是所有对象共享的;

访问方式:通过 “类名.静态成员名” 这种方式访问;

4.静态成员变量的初始化

就地初始化:定义的时候直接赋值,即就地初始化;

静态代码块初始化:使用 static 修饰,静态代码块位于类的里面,方法的外面,在代码块中初始化静态成员变量;

七、代码块

实例代码块:处于类的里面,方法的外面,用于初始化成员属性的代码块;

静态代码块:用 static 关键字修饰的代码块,比实例代码块更先执行;

执行时机:类加载时,静态代码块就会执行;创建对象时,实例代码块才会执行;

执行顺序:静态代码块,实例代码块,构造方法;

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

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

相关文章

深度学习Y8周:yolov8.yaml文件解读

🍨 本文为🔗365天深度学习训练营中的学习记录博客🍖 原作者:K同学啊 本周任务:根据yolov8n、yolov8s模型的结构输出,手写出yolov8l的模型输出、 文件位置:./ultralytics/cfg/models/v8/yolov8.…

【RocketMQ 生产者和消费者】- 生产者启动源码 - MQClientInstance 定时任务(4)

文章目录 1. 前言2. startScheduledTask 启动定时任务2.1 fetchNameServerAddr 拉取名称服务地址2.2 updateTopicRouteInfoFromNameServer 更新 topic 路由信息2.2.1 topic 路由信息2.2.2 updateTopicRouteInfoFromNameServer 获取 topic2.2.3 updateTopicRouteInfoFromNameSer…

解决Docker容器内yum: not found、apt: not found、apk: command not found等命令找不到问题

Linux有很多发行版,各发行版的包管理工具不一定相同。 Alpine的包管理工具是 apk Debian/Ubuntu的包管理工具是 apt Centos/RHEL的包管理工具是 yum 在安装软件之前,需要先查看Docker容器内的Linux是什么发行版,可使用 cat /etc/os-rele…

每日c/c++题 备战蓝桥杯(修理牛棚 Barn Repair)

修理牛棚 Barn Repair 题解 问题背景与挑战 在一个暴风雨交加的夜晚,Farmer John 的牛棚遭受了严重的破坏。屋顶被掀飞,大门也不翼而飞。幸运的是,许多牛正在度假,牛棚并未住满。然而,为了保护那些还在牛棚里的牛&am…

鸿蒙版Flutter库torch_light手电筒功能深度适配

鸿蒙版Flutter库torch_light手电筒功能深度适配:跨平台开发者的光明之路 本项目作者:kirk/坚果 适配仓库地址 作者仓库:https://github.com/svprdga/torch_light# 在数字化浪潮的推动下,跨平台开发框架如 Flutter 凭借其高效、…

【信息系统项目管理师】一文掌握高项常考题型-项目进度类计算

更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 一、进度类计算的基本概念1.1 前导图法1.2 箭线图法1.3 时标网络图1.4 确定依赖关系1.5 提前量与滞后量1.6 关键路径法1.7 总浮动时间1.8 自由浮动时间1.9 关键链法1.10 资源优化技术1.11 进度压缩二、基本公式…

深入了解linux系统—— 操作系统的路径缓冲与链接机制

前言 在之前学习当中,我们了解了被打开的文件是如何管理的;磁盘,以及ext2文件系统是如何存储文件的。 那我们要打开一个文件,首先要先找到这个文件,操作系统又是如何去查找的呢? 理解操作系统搜索文件 …

Docker Hub仓库介绍

Docker Hub仓库全解析:从公共市场到私有化部署指南 一、Docker Hub公共镜像市场 1.1 核心功能解析 全球最大容器镜像库:累计托管超500万镜像核心服务矩阵: #mermaid-svg-CAMkhmtSWKEUw7z0 {font-family:"trebuchet ms",verdana,a…

redis使用RDB文件恢复数据

设置存盘间隔为120秒且10个key改变数据自动存盘使用RDB文件恢复数据 IP地址主机名192.168.10.170redis170 [rootredis170 ~]# yum install -y redis [rootredis170 ~]# systemctl start redis步骤一:设置存盘间隔为120秒且10个key改变自动存盘 [rootredis170 ~]#…

SpringBoot多环境配置文件切换

resources下application.yml、application-dev.yml、application-prod.yml多个配置文件。 spring:profiles:active: devspring:profiles:active: prod一般都是通过修改spring.profiles.active值来修改加载不同环境的配置信息,可以把切换的dev/prod放到pom.xml文件来…

Java 并发编程高级技巧:CyclicBarrier、CountDownLatch 和 Semaphore 的高级应用

Java 并发编程高级技巧:CyclicBarrier、CountDownLatch 和 Semaphore 的高级应用 一、引言 在 Java 并发编程中,CyclicBarrier、CountDownLatch 和 Semaphore 是三个常用且强大的并发工具类。它们在多线程场景下能够帮助我们实现复杂的线程协调与资源控…

【Java多线程】多线程状态下如何安全使用ArrayList以及哈希表

🔍 开发者资源导航 🔍🏷️ 博客主页: 个人主页📚 专栏订阅: JavaEE全栈专栏 多线程安全使用ArrayList 手动加锁 日常中最常用的方法,使用synchronized进行加锁,把代码打包成一份&a…

InnoDB引擎底层解析(二)之InnoDB的Buffer Pool(三)

Buffer Pool 实例 我们上边说过,Buffer Pool 本质是 InnoDB 向操作系统申请的一块连续的内存空间,在多线程环境下,访问 Buffer Pool 中的各种链表都需要加锁处理,在Buffer Pool特别大而且多线程并发访问特别高的情况下&#xff0…

Netty学习专栏(三):Netty重要组件详解(Future、ByteBuf、Bootstrap)

文章目录 前言一、Future & Promise:异步编程的救星1.1 传统NIO的问题1.2 Netty的解决方案1.3 代码示例:链式异步操作 二、ByteBuf:重新定义数据缓冲区2.1 传统NIO ByteBuffer的缺陷2.2 Netty ByteBuf的解决方案2.3 代码示例:…

Vue3逐步抛弃虚拟Dom,React如何抉择

虚拟DOM:前端界的替死鬼 这玩意儿就是个前端开发的充气娃娃! 你以为它很牛逼?无非是给真DOM当替死鬼! 每次数据变,虚拟DOM先搁内存里自嗨一顿,diff算法跟便秘似的算半天,最后才敢碰真DOM。 说白…

分布式锁总结

文章目录 分布式锁什么是分布式锁?分布式锁的实现方式基于数据库(mysql)实现基于缓存(redis)多实例并发访问问题演示项目代码(使用redis)配置nginx.confjmeter压测复现问题并发是1,即不产生并发问题并发30测试,产生并发问题(虽然单实例是synchronized&am…

解决自签名证书HTTPS告警:强制使用SHA-256算法生成证书

解决自签名证书HTTPS告警:强制使用SHA-256算法生成证书 一、问题场景 在使用OpenSSL生成和配置自签名证书时,常遇到以下现象: 浏览器已正确导入根证书(.pem文件),但访问HTTPS站点时仍提示不安全连接或证…

线上 Linux 环境 MySQL 磁盘 IO 高负载深度排查与性能优化实战

目录 一、线上告警 二、问题诊断 1. 系统层面排查 2. 数据库层面分析 三、参数调优 1. sync_binlog 参数优化 2. innodb_flush_log_at_trx_commit 参数调整 四、其他优化建议 1. 日志文件位置调整 2. 生产环境核心参数配置模板 3. 突发 IO 高负载应急响应方案 五、…

window 显示驱动开发-初始化和 DMA 缓冲区创建

若要指示 GPU 支持 GDI 硬件加速,显示微型端口驱动程序的 DriverEntry 函数实现必须使用指向驱动程序实现的 DxgkDdiRenderKm 函数的指针填充 DRIVER_INITIALIZATION_DATA 结构的 DxgkDdiRenderKm 成员。 DirectX 图形内核子系统调用 DxgkDdiRenderKm 函数&#xf…

Go语言实战:使用 excelize 实现多层复杂Excel表头导出教程

Go 实现支持多层复杂表头的 Excel 导出工具 目录 项目介绍依赖说明核心结构设计如何支持多层表头完整使用示例总结与扩展 项目介绍 在实际业务系统中,Excel 文件导出是一项常见功能,尤其是报表类需求中常见的复杂多级表头,常规表格组件往…