8.Java面向对象---类、属性和方法

news/2024/3/29 20:41:03/文章来源:https://blog.csdn.net/weixin_44203782/article/details/130138506

Java面向对象—类、属性和方法

在生活中,说到类,可以联想到类别,同类,会想到一类人,一类事物等等。而这一类人或事物都是具有相同特征或特点和行为的,我们根据不同的特征或特点和行为将他们归类或分类。同时,当我们认识一个新事物的时候,我们一般来说是从过往的事物中总结事物的特点(特征),并比对新事物,把新事物进行归类,以达到认识新事物。在Java中,类是对一组具有相同特征和行为的对象的抽象描述。可以看出和生活中对类的定义很像。在Java程序中,我们将其相同的特征称为属性,行为则称为方法(函数)。

一、类和对象

Java是一门面向对象的编程语言,理解Java,首先要理解类与对象这两个概念。

  • 类:类是一个模板,它描述一类对象的行为和状态。
  • 对象:对象:对象是类的一个实例。

综上所述,看看周围真实的世界,会发现身边有很多对象,车,狗,人等等。所有这些对象都有自己的状态和行为。拿一条狗来举例,它的状态有:名字、品种、颜色,行为有:叫、摇尾巴和跑。
对比现实对象和软件对象,它们之间十分相似。软件对象也有状态和行为。软件对象的状态就是属性,行为通过方法体现。在软件开发中,方法操作对象内部状态的改变,对象的相互调用也是通过方法来完成。

1、类的定义:
在这里插入图片描述
在这里插入图片描述
代码示例:

public class Admin {}

示例说明:

  • public 是类的修饰符,表明该类是公共类,可以被其他类访问。修饰符会在面向对象—封装中详细介绍
  • class 是定义类的关键字
  • Admin 是类名称

对象是类的一个实例,创建对象的过程也叫类的实例化。对象是以类为模板来创建的。
在Java中,使用new关键字来创建对象,一般有以下三个步骤:

  • 声明:声明一个对象,包括对象名称和对象类型。
  • 实例化:使用关键字new来创建一个对象。
  • 初始化:使用new创建对象时,会调用构造方法初始化对象。

代码示例:

Admin admin=new Admin();

二、类的属性

1、类属性的定义
类的属性,是用来描述这一类的相关信息,例如管理员是一类人的总称,那么管理员就有自己的属性,大概包括姓名,年龄,用户名,密码等。定义类的属性通过声明变量的形式来完成。每个属性都有它对应的访问修饰符、数据类型、变量名。
代码示例:

public class Admin {public String name;public int age;public String loginName;public String password;}

ps:定义类的属性可以不为变量赋初始化值,属性的初始值会在类对象被实例化时进行赋值。

2、类属性的分类:

  • 局部变量:在方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
  • 成员变量:成员变量是定义在类中、方法体之外的变量。这种变量在创建对象的时候实例化(分配内存)。成员变量可以被类中的方法和特定类的语句访问。
  • 类变量:类变量也声明在类中,方法体之外,但必须声明为static类型。static 也是修饰符的一种。

3、this关键字
当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是 this。因此,this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this,并且this只和特定的对象关联,而不和类关联,同一个类的不同对象有不同的this。在本类中,方法内可以通过this访问累的非静态变量和方法。

三、类的方法

1、类方法的定义
Java语言中的“方法”(Method)在其他语言当中也可能被称为“函数”(Function)。对于一些复杂的代码逻辑,如果希望重复使用这些代码,并且做到“随时任意使用”,那么就可以将这些代码放在一个大括号“{}”当中,并且起一个名字。使用代码的时候,直接找到名字调用即可。
在这里插入图片描述
方法包含一个方法头和一个方法体。下面是一个方法的所有部分:

  • 访问修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法会被谁访问到。
  • 方法修饰符:用来修饰特殊方法的修饰符。
  • 返回值类型:方法可能会返回值。return
    ValueType是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType
    是关键字void。(构造方法除外)
  • 方法名:是方法的实际名称。方法名和参数表共同构成方法签名。
  • 方法参数:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
  • 方法体:方法体包含具体的语句,定义该方法的功能,使用大括号作为方法范围。

代码示例:

public static void main(String[] args) {}

2、特殊的方法----构造方法

在类实例化的过程中自动执行的方法叫做构造方法,它不需要你手动调用。构造方法可以在类实例化的过程中做一些初始化的工作。

代码示例:

	public Admin() {}public Admin(String name,int age,String loginName,String password) {this.name=name;this.age=age;this.loginName=loginName;this.password=password;}

构造方法注意事项:

  • 构造方法的名称必须与类的名称相同,
  • 构造方法没有返回值。
  • 每个类都有构造方法。如果没有显式地为类定义构造方法,Java编译器将会为该类提供一个默认的构造方法。
  • 构造方法是用来初始化类对象,并为类的成员变量赋值
  • 构造方法可以有多个,通过方法重载实现

3、特殊的方法----静态方法
有时你希望定义一个类的方法,使它的使用完全独立于该类的任何对象。通常情况下,类方法必须通过它的类的对象访问,但是可以创建这样一个成员,它能够被它自己使用,而不必引用特定的实例。在方法的声明前面加上关键字static(静态的)就能创建这样的方法,就是静态方法。我们常用的静态方法就是main方法。

代码示例:

	public static void ageAdd() {System.out.println("年龄随着自然年增长");}

注意事项:

  • 它们仅能调用其他的static 方法。
  • 它们只能访问static数据。
  • 它们不能以任何方式引用this 或super(关键字super 与继承有关)
  • 它们只能被“.”运算符调用

4、方法的使用
类对象实例化后,可以通过调用方式进行使用方法。
代码示例:

	Admin admin=new Admin();admin.ageAdd();

方法被调用后,会执行方法中的代码,从而实现代码的复用。

5、方法的重载
如果一个类中有多个具有相同名称但参数不同的方法,则称为方法重载。如果只需要执行一个操作,具有相同的方法名称将增加程序的可读性。

方法重载的特点:

  • 与返回值类型无关, 只看方法名和参数列表
  • 在调用时, 虚拟机通过参数列表的不同来区分同名方法

代码示例:

	public void ageAdd() {System.out.println("年龄随着自然年增长");}public int ageAdd(int year) {System.out.println("年龄随着自然年增长");return this.age+=year;}

在这里插入图片描述
总结:类是最基本的面向对象的呈现,通过类的属性和方法,来定义某一类事物的总称,有了类的概念,就可以是我们更清晰的理解计算机,更清晰的理解编程。

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

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

相关文章

形式语言和自动机总结DFA、NFA正则语言

第一章DFA 形式定义和状态转移函数: DFA是一种特殊的NFA, A{Q,,,,F} Q:输入状态集,∑:字母表,δ:状态转移函数Q∑→Q q0∈Q初始状态 F终结集 设计举例 1.设计接受偶数个0和偶数个1串的DFA 2.设计 DFA 接受 {0,1} 上的字符串 w, 且 w 是 …

【数据结构】-计数排序

🎇作者:小树苗渴望变成参天大树 🎉 作者宣言:认真写好每一篇博客 🎊作者gitee:link 如 果 你 喜 欢 作 者 的 文 章 ,就 给 作 者 点 点 关 注 吧! 文章目录前言一、计数排序二、排序算法复杂度…

《花雕学AI》18:AI绘画尝鲜Prompt Hunt,使用人工智能模型来创造、探索和分享艺术作品

引言: 人工智能是当今科技领域的热门话题,它不仅可以帮助人类解决各种实际问题,也可以激发人类的创造力和艺术感。Prompt Hunt就是一个利用人工智能模型来创造、探索和分享艺术作品的AI绘画网站。它提供了三种不同的模型,分别是S…

Java垃圾收集原理

程序计数器、虚拟机栈、本地方法栈这三个区域随线程而灭,栈中栈帧的内存大小也是在确定的。这几个区域的内存分配和回收都具有确定性,因此不需要过多考虑如何回收。 Java堆和方法区这两个区域有着很显著的不确定性 一个接口的实现类需要的内存可能不一…

用Flutter开发一款音乐App(从0到1开发一款音乐App)

Flutter Music_Listener(flutter音乐播放器) Flutter version 3.9 项目介绍 1、项目整体基于getxretrofitdiojsonserialize开发 2、封装通用控制器BaseController,类似jetpack mvvm框架中的BaseViemodel 3、封装基础无状态基类BaseStatelessWidget,结合…

十三、市场活动:全部导出

功能需求:批量导出市场活动 用户在市场活动主页面,点击"批量导出"按钮,把所有市场活动生成一个excel文件,弹出文件下载的对话框; 用户选择要保存的目录,完成导出市场活动的功能. *导出成功之后,页面不刷新 功能分析:导出市场活动 1.给批量…

Vue组件化编程【Vue】

2.Vue 组件化编程 2.1 模块与组件、模块化与组件化 2.1.1 模块 理解:向外提供特定功能的js程序,一般就是一个js文件为什么:js文件很多很复杂作用:复用js、简化js的编写、提高js运行效率。 2.1.2 组件 理解:用来实…

接口自动化【一】(抓取后台登录接口+postman请求通过+requests请求通过+json字典区别)

文章目录 前言一、requests库的使用二、json和字典的区别三、后端登录接口-请求数据生成四、接口自动化-对应电商项目中的功能五、来自postman的代码-后端登录总结前言 记录:json和字典的区别,json和字段的相互转化;postman发送请求与Python…

source insight4.0使用技巧总结

一、技巧1:查看函数调用关系 步骤 1:在主菜单中点击下图中的按钮 图 1 打开relation界面 步骤 2:在弹出的relation界面点击“设置”按钮, 图2 点击“设置”按钮 步骤3: 在“设置”界面中,“Levels”选择…

AC7811-FOC无感控制代码详解

目录 矢量控制原理 矢量控制框图 电流采样方式 电流在整个控制过程中的传递 采样关键点 三电阻 双电阻 单电阻 三者对比 坐标变换 dq轴电流的PI控制 启动方式 启动波形 脉冲注入 高频注入 Startup 预定位到指定角度 PulseInject_api hfi_api Speed loop s…

前端学习:HTML块、类、Id

目录 快 一、块元素、内联元素 二、HTML 元素 三、HTML元素 类 一、分类块级元素 二、分类行内元素 Id 一、使用 id 属性 二、 class与ID的差异 三、总结 快 一、块元素、内联元素 大多数HTML元素被定义为块级元素或内联元素。 块级元素在浏览器显示时,通常会…

FTP-----局域网内部传输文件(1)

在日常工作中,如果需要跨设备的传输文件,您需要借助USB数据线或者借助应用实现无线互联,将所需文件传输到对应设备,这一来一去,花费的时间与精力变多了,那么,怎么实现不使用第三方软件来实现跨设…

3-5年以上的功能测试如何进阶自动化?【附学习路线】

做为功能测试人员来讲,从发展方向上可分两个方面: 1、业务流程方向 2、专业技能方向。 当确定好方向后,接下来就是如何达到了。(文末自动化测试学习资料分享) 一、业务流程方向 1、熟悉底层的业务 作为功能测试工程师来讲,了解…

【C++高级】手写线程池项目-经典死锁问题分析-简历项目输出指导

作为五大池之一, 线程池的应用非常广 泛,不管是客户端程序,还是后台服务程序,掌握线程池,是提高业务处理能力的必备模块 本课程将带你从零开始,设计一个支持fixed和cached模式的线程池,玩转C11、…

IGA_PLSM3D的理解1

文章目录前言一、IgaTop3D_FAST.m给的参数二、Material properties 材料特性对Geom_Mod3D的理解对Pre_IGA3D的理解 输出1-----CtrPts: 输出2-----Ele: 输出3-----GauPts:前言 只是为方便学习,不做其他用途 一、IgaTop3D_FAST.m给的…

Python爬虫-某跨境电商(AM)搜索热词

前言 本文是该专栏的第42篇,后面会持续分享python爬虫干货知识,记得关注。 关于某跨境电商(AM),本专栏前面有单独详细介绍过,获取配送地的cookie信息以及商品库存数据,感兴趣的同学可往前翻阅。 1. python爬虫|爬取某跨境电商AM的商品库存数据(Selenium实战) 2. Seleni…

5.39 综合案例2.0 - STM32蓝牙遥控小车1(手机APP遥控)

综合案例2.0 - 蓝牙遥控小车1- 手机APP遥控成品展示案例说明器件说明连线小车源码手机遥控APPAPP使用说明成品展示 案例说明 用STM32单片机做了一辆蓝牙控制的麦轮小车,分享一下小车的原理和制作过程。 控制部分分为手机APP,语音模块控制,Ha…

15-721 chapter2 内存数据库

Background 随着时代的发展,DRAM可以容纳足够的便宜,容量也变大了。对于数据库来说,数据完全可以fit in memory,但同时面向disk的数据库架构不能很好的发挥这个特性 这张图是disk database的cpu instruction cost 想buffer pool…

第5章 继承-Java核心技术·卷1

文章目录Java与C不同基本概念继承:基于已有的类创建新的类。构造器多态定义超类变量可以引用所有的子类对象,但子类变量不能引用超类对象。子类引用的数组可以转换成超类引用的数组覆写返回子类型强制类型转换阻止继承:final类和方法多态 vs …

ROS学习-ROS简介

文章目录1.ROS1.1 ROS概念1.2 ROS特征1.3 ROS特点1.4 ROS版本1.5 ROS程序其他名词介绍1. 元操作系统2. IDL 接口定义语言一些网站1.ROS 1.1 ROS概念 ROS(Robot Operating System,机器人操作系统) ROS 是一个适用于机器人的开源的元操作系统,提供一系列…