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

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;
	}

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

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

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

相关文章

Java多线程

一:进程与线程 概述:几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程。当一个进程运行时,内部可能包括多个顺序执行流,每个顺序执行流就是一个线程。 进程&#x…

Faster-RCNN代码解读6:主要文件解读-中

Faster-RCNN代码解读6:主要文件解读-中 前言 ​ 因为最近打算尝试一下Faster-RCNN的复现,不要多想,我还没有厉害到可以一个人复现所有代码。所以,是参考别人的代码,进行自己的解读。 ​ 代码来自于B站的UP主&#xff…

【Linux系统】理解Linux中进程间通信

Linux进程间通信 1 进程间通信的介绍1.1为什么要有进程间通信1.2 为什么能进程间通信 2 进程间通信的框架2.1 进程间通信机制的结构2.2 进程间通信机制的类型2.2.1 共享内存式2.2.2 消息传递式 2.3 进程间通信的接口设计 3 进程间通信机制简介4 详细讲解进程间通信部分机制&…

文献管理软件Endnote、Mendeley、Zotero比较及选择,Zotero基础使用技巧

引言 大家好,我是比特桃。日常开发的项目分为两种,一种是成熟化的工程项目,只需要与具体的业务紧密结合及应用,难点也比较偏向于软件工程或者互联网高并发的方向。这种项目我们通常不会选择去查文献去寻找问题的解决办法&#xf…

Altium Designer 20 导出 Gerber 制造文件流程及注意事项

一、导出 Gerber 流程 设置原点:在Edit菜单中选择Origin-Set (快捷键E-O-S)定好原点,一般放在左下角附近即可。 放置分孔图表:在Place菜单中选择String放置“.Legend”(快捷键P-S)…

【java】maven引用外部 jar 包,以RXTXcomm.jar为例

目录 1.作为资源文件夹内的资源引用2.将jar包手动安装到maven仓库 工具:IntelliJ IDEA 2020.2.3 x64 1.作为资源文件夹内的资源引用 1.在项目根路径新建文件夹lib, 将资源文件复制到该文件夹。 2.将文件夹设置为资源文件夹:选中文件夹lib右键 -> Mak…

Activity启动模式

Activity的启动模式 首先activity启动之后是放在任务栈中的,task stack,既然是栈,遵循先进后出原则。有玩家比喻oncreate是入栈,onDestroy是出栈。 同一个APP中,不同的activity可以设置为不同的启动模式。在manifest…

【Kafka】SASL认证的Kafka客户端代码示例(spring-kafka和原生客户端)

文章目录 spring-kafka原生客户端Tips spring-kafka 添加依赖&#xff1a; <dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId><version>2.6.3</version></dependency>添加spr…

【springcloud 微服务】Spring Cloud Alibaba Nacos使用详解

目录 一、前言 二、nacos介绍 2.1 什么是 Nacos 2.2 nacos 核心能力 2.2.1 服务发现和服务健康监测 2.2.2 动态配置服务 2.2.3 动态 DNS 服务 2.2.4 服务及其元数据管理 2.2.5 nacos生态地图 2.3 与其他配置中心对比 三、nacos快速部署 3.1 获取安装包 3.2 修改脚…

电阻器的原理、类型、参数以及生活中常见的应用

电阻器是电子电路中最基本的元件之一&#xff0c;它的作用是限制电流流过的大小&#xff0c;在电子电路中广泛应用于电流控制、电压分压、信号衰减等方面。在本文中&#xff0c;我们将详细介绍电阻器的原理、类型、参数以及生活中常见的应用。 一、电阻器的原理 电阻器是一种…

go语言切片做函数参数传递+append()函数扩容

go语言切片函数参数传递append()函数扩容 给你二叉树的根节点 root 和一个整数目标和 targetSum &#xff0c;找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 二叉树递归go代码&#xff1a; var ans [][]int func pathSum(root *TreeNode, targetSum int) ( [][…

ActiveMQ使用(四):在JavaScript中发送的MQTT消息在SpringBoot中变为字节数组

ActiveMQ使用(四):在JavaScript中发送的MQTT消息在SpringBoot中变为字节数组 1. 问题描述 JmsListener(destination "test_producer", containerFactory "topicListenerContainer")public void receiveTestProducer(String message) throws JMSExceptio…

spring bean

图灵课堂学习笔记 1. BeanFactory与ApplicationContext的关系 p56 ApplicationContext在BeanFactory基础上对功能进行了扩展&#xff0c;例如&#xff1a;监听功能、国际化功能等。BeanFactory的API更偏向底层&#xff0c;ApplicationContext的API大多数是对这些底层API的封…

JVM OOM问题排查与解决思路

OOM原因 1. 堆溢出 报错信息&#xff1a; java.lang.OutOfMemoryError: Java heap space 代码中可能存在大对象分配&#xff0c;无法获得足够的内存分配 可能发生内存泄露&#xff0c;导致内存被无效占用以至于耗尽 2. 永久代/元空间溢出 报错信息&#xff1a; java.lang.O…

C#,码海拾贝(19)——一般实矩阵的QR分解(QR Decomposition)方法之C#源代码,《C#数值计算算法编程》源代码升级改进版

1 实矩阵 实矩阵&#xff0c;指的是矩阵中所有的数都是实数的矩阵。如果一个矩阵中含有除实数以外的数&#xff0c;那么这个矩阵就不是实矩阵。 2 QR&#xff08;正交三角&#xff09;分解法 QR&#xff08;正交三角&#xff09;分解法是求一般矩阵全部特征值的最有效并广泛应…

Flowable从入门到源码分析

什么是工作流&#xff1f; 工作流&#xff0c;是把业务之间的各个步骤以及规则进行抽象和概括性的描述。使用特定的语言为业务流程建模&#xff0c;让其运行在计算机上&#xff0c;并让计算机进行计算和推动。 工作流解决的痛点在于&#xff0c;解除业务宏观流程和微观逻辑的…

jenkins gitlab asp.net core持续集成

什么是jenkins Jenkins直接取自其官方文档&#xff0c;是一个独立的开源自动化服务器&#xff0c;您可以使用它来自动执行与构建、测试、交付或部署软件相关的各种任务。 jenkins可以干什么 Jenkins 通过自动执行某些脚本来生成部署所需的文件来工作。这些脚本称为JenkinsFi…

2023_深入学习HTML5

H5 基于html5和 css3和一部分JS API 结合的开发平台(环境) 语义化标签 header : 表示头部&#xff0c;块级元素 footer &#xff1a; 表示底部&#xff0c;块级元素 section &#xff1a;区块 nav &#xff1a; 表示导航链接 aside &#xff1a; 表示侧边栏 output &am…

二叉搜索树(BSTree)

目录 一、二叉搜索树 二、二叉搜索树的接口及实现 1、二叉搜索树的查找 2、二叉搜索树的插入 3、二叉搜索树的删除 三、二叉搜索树的递归版本 本期博客主要分享二叉搜索树的底层实现。(主要是笔记&#xff0c;供自己复习使用&#x1f602;) 一、二叉搜索树 二叉搜索树(B…

MybatisPlus主键策略

Mybatis默认主键策略是TableId(type IdType.ASSIGN_ID) 这是默认策略雪花算法 此时主键类型可以是String 数据表字段类型可以是bigint int varchar 无需数据表主键自增 TableId(type IdType.ASSIGN_AUTO) 是主键自增策略:该策略为跟随数据库表的主键递增策略&…