【JavaEE重点知识归纳】第7节:类和对象

目录

一:了解面向对象

1.什么是面向对象

2.面向对象和面向过程区分

二:类定义和使用

1.什么是类

2.练习:定义一个学生类

三:类的实例化

1.什么是实例化

2.类和对象的说明

四:认识this

1.为什么要有this引用

2.什么是this引用

3.this引用的特性

五:对象的构造及初始化

1.如何初始化对象

2.构造方法

3.默认初始化 

4.就地初始化

六:static成员

1.static修饰成员变量

2.static修饰成员方法

七:代码块

1.概念及分类

2.普通代码块

3.构造代码块(实例代码块)

4.静态代码块


一:了解面向对象

1.什么是面向对象

        Java是一门纯面向对象的语言(Object  Oriented  Program,简称OOP),在面向对象的世界里,一切皆为对象。面向对象是解决问题一种思想,主要依靠对象之间的交互完成一件事情。

2.面向对象和面向过程区分

把大象装进冰箱的例子:

面向对象:大象(走进)、冰箱(打开,关闭)

面向过程:一打开冰箱、二把大象装进冰箱、三关闭冰箱

二:类定义和使用

1.什么是类

(1)类是用来对一个实体(对象)来进行描述,描述该对象具有哪些属性,有哪些功能

(2)定义格式:

class 类名{

        //成员变量(属性)

        //成员方法(功能)

}

class为定义类的关键字    成员属性定义在类里面,方法外面(注意区别与局部变量的不同)

2.练习:定义一个学生类
public class Student {//成员变量String name;int age;char sex;String grade;//成员方法public void study(){System.out.println("学习");}public void eat(){System.out.println("吃饭");}public void run(){System.out.println("跑步");}
}

 

三:类的实例化

1.什么是实例化

(1)定义了一个类,相当于在计算机中定义了一个新的类型(用户自定义类型)

(2)用类类型创建对象的过程,称为类的实例化。在Java中用new关键字实例化一个对象

Student stu=new Student();//stu就是一个引用,指向了Student对象,通过引用来访问对象的属性或者方法

2.类和对象的说明

(1)类只是一个模型一样的东西,用来对一个实体进行描述,限定了类有哪些成员

(2)类是一个自定义的类型,可以用来定义变量

(3)一个类可以实例化多个对象,每new一个对象出来,就会开辟一块内存,占用实际的物理空间

(4)类就像菜谱一样,类实例化对象就像按照菜谱炒菜一样

四:认识this

1.为什么要有this引用

当形参名和成员变量名形同的时候,分不清到底谁给谁赋值,this就很好的解决这个问题

2.什么是this引用

(1)this引用指向当前对象,在成员方法中所有成员变量的操作,都是通过该引用去访问

(2)需要注意的是,this引用的是调用成员方法的对象,只能应用于类的成员方法中

3.this引用的特性

(1)this的类型:对应类类型引用,即哪个对象调用就是哪个对象的引用类型

(2)在成员方法中,this只能引用当前对象,不能再引用其他对象

五:对象的构造及初始化

1.如何初始化对象

(1)我们知道局部变量必须要初始化才能使用,但是为什么成员变量(属性)声明之后之后没有初始化依然可以使用,这就是不同点,这就引出了构造方法的概念

(2)在讲构造方法之前,先了解成员变量没有被初始化的值。基本数据类型默认是0,引用类型默认是null

2.构造方法

(1)什么是构造方法:构造方法也称构造器,是一个特殊的成员方法(注意:构造方法是成员方法)。名字必须与类名相同,在创建对象时,由编译器自动调用,并且在整个对象的生命周期中只调用一次。

(2)注意:构造方法的作用就是对对象中的成员进行初始化,不负责给对象开辟空间

(3)当一个类中没有任何一个构造方法的时候,Java会自动提供一个不带参数的构造方法;但是当一个类中由一个构造方法时,Java不会自动提供构造方法了,不带参数的构造方法也不会提供了,如由需要,在写带参数的构造方法时,最好多写一个无参的构造方法。

(4)特性:

        1)名字必须与类名相同

        2)没有返回值类型,设置为void也不行

        3)构造方法之间,是可以构成方法的重载(是不是又忘记重载啥意思了:满足以下条件就是重载【一是方法名相同,二是参数列表不同(包括个数、类型……),三是返回值不做要求】)

3.默认初始化 

(1)回答上述问题:为什么局部变量在使用时必须初始化,而成员变量可以不用呢?因为对象那个空间被申请好之后,对象中包含的成员就是已经设置好初始值的了。

(2)完成一个对象的构造,分两步:

        1)分配内存

        2)调用合适的构造方法

(3)实现一个new语句,JVM就需要做很多步骤:

        1)检测对象对应的类是否被加载,没有被加载就需要加载

        2)为对象分配内存

        3)处理并发问题(多个线程同时申请对象,JVM要保证给对象分配的空间不冲突)

        4)初始化分配空间

        5)设置对象头信息

        6)调用构造方法,给对象中各个成员赋值

4.就地初始化

在声明成员变量的时候就赋初始值

六:static成员

1.static修饰成员变量

(1)定义:static修饰的成员变量,称为静态成员变量,也称类变量

(2)特性:

        1)不属于某个具体的对象,是类的属性,所有对象共享的,不存储在某个对象的空间中

        2)既可以通过对象访问,也可以通过类名访问,但一般是使用类名访问

        3)类变量存储在方法区

        4)生命周期与类同存同毁

(3)小结:
        1)普通成员变量:属于对象,放堆上,访问方式:对象的引用.xxx

        2)静态成员变量:不属于对象,放方法区,访问方式:类名.xxx

2.static修饰成员方法

(1)定义:static修饰的成员方法,称为静态成员方法,也称类方法

(2)特性:

        1)不属于某个具体的对象,是类方法

        2)既可以通过对象访问,也可以通过类名访问,但一般是使用类名访问

        3)·不能在静态方法中直接访问任何非静态成员变量

        4)·静态方法中不能直接访问任何非静态方法,因为非静态方法有this参数,在静态方法中无法传递this引用

七:代码块

1.概念及分类

使用{}定义的一段代码称为代码块。有以下四种类型:

        1)普通代码块

        2)构造块

        3)静态块

        4)同步代码块(目前不做过多讨论)

2.普通代码块

        定义在方法中的代码块。直接使用{}

3.构造代码块(实例代码块)

(1)定义在类中的代码块,一般用于初始化实例成员变量。

(2)举例:

4.静态代码块

(1)使用static定义的代码块为静态代码块,一般用于初始化静态成员变量

(2)举例:

(3)注意:

        1)静态代码块只会执行一次,不管会生成多少个对象

        2)静态成员变量是类的属性,因此是在JVM加载类时开辟空间并初始化的

        3)若一个类中包含多个 静态代码块,在编译时,编译器会按定义先后依次执行

        4)构造代码块只有在创建对象的时候才会执行

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

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

相关文章

unity脚本_Input鼠标键盘 c#

获取鼠标坐标 检测鼠标输入 如果在运行游戏场景中点击一下鼠标左键 检测鼠标抬起 选中即可 检测键盘按下 当前屏幕分辨率 注意:获取的是显示器的分辨率 获取设备屏幕宽高 屏幕休眠模式 窗口/全屏模式 移动设备屏幕转向

Tauri | 新版2.0路线图:更强大的插件以及支持 iOS、Android 应用构建

Tauri官方在9月7号发布了新版2.0的路线图,该版本主要是对移动端进行升级,主要特性如下: 强大的插件系统,官方把常用的功能进行了插件化(见下图)支持使用 Swift、Kotlin 编程语言开发插件,对 iO…

软件设计开发笔记6:基于QT的Modbus RTU从站

Modbus是一种常见的工业系统通讯协议。在我们的设计开发工作中经常使用到它。作为一种主从协议,在上一篇我们实现了Mobus RTU主站工具,接下来这一篇中我们将简单实现一个基于QT的Mobus RTU从站工具。 1、概述 Modbus RTU从站应用很常见,有一…

mysql 逻辑备份 bin-log日志恢复

一、逻辑备份 逻辑备份:备份的是建表,建库,插入数据等操作所执行SQL语句,适用于中小型数据库,效率相对较低,提供三种级别的备份,表级,库级和全库级。 本质:导出的是SQL语…

《视觉 SLAM 十四讲》第 7 讲 视觉里程计1 【如何根据图像 估计 相机运动】【特征点法】

github源码链接V2 文章目录 第 7 讲 视觉里程计17.1 特征点法7.1.1 特征点7.1.2 ORB 特征FAST 关键点 ⟹ \Longrightarrow ⟹ Oriented FASTBRIEF 描述子 7.1.3 特征匹配 7.2 实践 【Code】本讲 CMakeLists.txt 7.2.1 使用 OpenCV 进行 ORB 的特征匹配 【Code】7.2.2 手写 O…

CTF 全讲解:[SWPUCTF 2021 新生赛]Do_you_know_http

文章目录 参考环境题目hello.php雾现User-Agent伪造 User-AgentHackBarHackBar 插件的获取修改请求头信息 雾散 a.php雾现本地回环地址与客户端 IP 相关的 HTTP 请求头X-Forwarded-For 雾散 参考 项目描述搜索引擎Bing、GoogleAI 大模型文心一言、通义千问、讯飞星火认知大模型…

细粒度特征提取和定位用于目标检测:PPCNN

1、简介 近年来,深度卷积神经网络在计算机视觉上取得了优异的性能。深度卷积神经网络以精确地分类目标信息而闻名,并采用了简单的卷积体系结构来降低图层的复杂性。基于深度卷积神经网络概念设计的VGG网络。VGGNet在对大规模图像进行分类方面取得了巨大…

STM32--基于STM32的智能家居设计与实现

本文详细介绍基于STM32F103C8T6的智能家居设计与实现,详细设计资料见文末链接 一、功能模块介绍 智能家居系统系统图如下所示,主要包括温湿度传感器、OLED液晶显示,WIFI物联网模块、人体红外预警模块、烟雾传感器模块、蜂鸣器模块 &#…

linux,write:xxx has messages disabled 与 Ubuntu多用户同时登录的问题 ubuntu 20.04

write:xxx has messages disabled 问题 被这问题折磨了好久,搜都搜不到,还是灵机一动想到的。 很多 帖子说,要使用 mesg y用了还是没有用,后面我登录了很多用户,发现只有root用户可以给别的用户使用write…

教资成绩什么时候出来 2023教资笔试成绩查询时间介绍

上半年教资笔试成绩查询开放时期为2023年4月13日,面试成绩查询开放时间在6月14日。而下半年教资笔试成绩查询开放时间为2023年11月8日,2023下半年教资面试时间是2023年12月9日-10日。 值得一提的是如果考生对成绩有异议的话,还可以在成绩公布…

194、SpringBoot --- 下载和安装 Erlang 、 RabbitMQ

本节要点: 一些命令: 小黑窗输入: rabbitmq-plugins enable rabbitmq_management 启动控制台插件 rabbitmq-server 启动rabbitMQ服务器 管理员启动小黑窗: rabbitmq-service install 添加rabbitMQ为本地服务 启动浏览器访问 htt…

1.springcloudalibaba nacos2.2.3部署

前言 nacos是springcloudalibaba体系的注册中心,演示如何搭建最新稳定版本的linux搭建。 前置条件,安装好jdk1.8 一、二进制压缩包下载 1.1 下载压缩包 nacos下载 点击下载下载后得到二进制包如下 nacos-2.2.3.tar.gz二、安装步骤 2.1.解压二进制…