java面向对象编程1——类及类的成员:属性、方法、构造器、代码块、内部类

ESP32-IDF HTTP服务器实战:从零搭建Web控制界面 本文详细介绍了如何在ESP32平台上使用ESP-IDF框架从零搭建HTTP服务器,并创建Web控制界面。内容涵盖环境配置、服务器基础设置、Web页面处理、GPIO控制接口实现及AJAX异步请求处理,帮助开发者快速掌握物联网设备Web控制开发。 阅读详情

前言:Java学习部分看的是尚硅谷宋老师的视频,笔记是根据老师的讲解和自己的理解整理的。

面向过程(pop) vs 面向对象(oop)

​ 面向过程是一种功能行为,以函数为最小单位,考虑的是怎么做

​ 面向对象强调了具备功能的对象,以类/对象为最小单位,考虑的是谁来做

Java面向对象编程的两个基本元素:类(class)——>对象(object)

​ 【类的使用、类的实例化】

  • 类:对一类事物的描述,是抽象的、概念上的定义。

  • 对象:是实际存在的该类事物的每个个体,具体的,实例。

  • 类的成员:属性(成员变量)、方法()

类和对象的使用步骤:

  1. 创建类、及设计类的成员(重点)
  2. 创建类的对象(类的实例化)
  3. 通过类的对象调用类中的结构【“对象变量名.属性”或“对象变量名.方法”】

类的成员1:属性的使用:

​ 属性(成员变量) VS 局部变量

  1. 属性是声明在类的{}内的

    局部变量是声明在方法、方法形参、构造器内、构造器形参、代码块内部的变量

  2. 属性可以使用权限修饰符修饰;局部变量不可以

    常见的权限修饰符:private\public\缺省\protected

  3. 属性有默认初始化值;局部变量没有

    属性的默认初始化值:

    ​ 整型变量(int\short\byte\long):0

    ​ 浮点型变量(float\double):0.0

    ​ 布尔型变量:false

    ​ 应用类型变量(数组、类、接口):null

  4. 属性在内存中存放在堆中

    局部变量在内存中存放在栈中

类的成员2:方法的使用:

  • 方法的声明:

    权限修饰符 返回值类型 方法名(形参列表){

    ​ 方法体;

    }

    1. 返回值类型可以分为有返回值和无返回值两种

      ①有返回值:要在声明时指定返回数据类型;在方法体中使用return关键字返回指定类型的变量或常量

      ②无返回值:用void声明;通常不使用return关键字,但如果使用,只能return;——表示方法的结束

    2. 形参列表格式:数据类型1 变量名1,数据类型2 变量名2······

  • 对象数组:
    数组的元素是类
    练习题:定义类Student,包含三个属性:学号number(int),年级state(int),成绩score(int)。 创建20个学生对象,学号为1到20,年级和成绩都由随机数确定。问题一:打印出3年级(state值为3)的学生信息。问题二:使用冒泡排序按学生成绩排序,并遍历所有学生信息

package com.oop.java;

public class Exer1 {
	public static void main(String[] args) {
		
		Student[] array = new Student[20];
		for(int i=0;i<array.length;i++) {
			//给数组元素赋值
			array[i] = new Student();
			//给元素的每个属性赋值
			array[i].number = i+1;
			array[i].state = (int)(Math.random()*9)+1;
			array[i].score =(int)(Math.random()*101)+0;
		}
		Exer1 ss = new Exer1();
		ss.searchState(array, 3);
		System.out.println();
		ss.sortState(array);
		ss.print(array);
	}
	//遍历数组
	public void print(Student[] array1) {
		for(int i=0;i<array1.length;i++) {
			System.out.println(array1[i].info());
			}
		}
	/**
	 * 查找Sudent数组 指定年级的学生信息
	 * @param array1指定数组
	 * @param state要查找的年级
	 */
	public void searchState(Student[] array1,int state) {
		for(int i=0;i<array1.length;i++) {
		if(array1[i].state==state) {
				//System.out.println(array[i]);//地址值
			System.out.println(array1[i].info());
			}
			}
		}
	
	/**
	 * 给Student数组,冒泡排序
	 * @param array1
	 */
	public void sortState(Student[] array1) {
		for(int i=0;i<array1.length-1;i++) {
			for(int j=0;j<array1.length-1-i;j++) {
				if(array1[j].score>array1[j+1].score) {
					//int temp = array[j].score;
					//array[j].score = array[j+1].score;
					//array[j+1].score = temp;
		//重要:换序交换的是数组元素student,不是学生的成绩
					Student temp = array1[j];
					array1[j] = array1[j+1];
					array1[j+1] = temp;
				}
			}
		}
	}
}
class Student{
	int number;//学号
	int state;//年级
	int score;//成绩
	
	//输出学生信息,可以写个方法
	public String info() {
		return "学号:"+number+", 年纪:"+state+", 成绩:"+score ;
	}
}
  • 方法的重载:同一个类、方法名相同,形参列表不同的几个方法之间构成重载

    ​ 注意:①形参列表:参数的个数、参数的数据类型(顺序)②与权限修饰符、返回值类型无关

  • 可变个数的形参

    格式:数据类型 ... 变量名

    可以传入多个同数据类型的形参(类似于数组)

    可变形参的定义只能声明在末尾且只有一个

  • 方法参数的值传递机制

    (重点理解借助画内存解析图,局部变量——栈,属性、new出来的结构——堆)

    值传递机制:①如果参数是基本数据类型,此时实参赋给形参的是实参真实存储的数据值

    ②如果参数是引用数据类型,此时 实参赋给形参的是实参存储数据的地址值

  • 递归方法的调用

    在一个方法中调用自身方法称为递归

package com.oop.java;
/*
* 递归方法的使用:
* 例题:已知一个数列:f(0)=1;f(1)=4,f(n+2)=2*f(n+1)+f(n)
* 		求f(10)的值
*/
public class Exer3 {
   public static void main(String[] args) {
   	Exer3 exe = new Exer3();
   	int f = exe.f(10);
   	System.out.println(f);
   }
   public int  f(int n) {
   	if(n==0) {
   		return 1;
   	}else if(n==1) {
   		return 4;
   	}else {
   		return 2*f(n-1)+f(n-2);
   	}
   }
}

类的成员3:构造器

  1. 作用:①创建对象;②初始化对象的信息

  2. 格式:权限修饰符 类名(形参列表){

    ​ }

  3. 说明:

    • 系统默认提供一个空参的构造器,其权限与类的相同;一旦显式的定义了构造器,系统就不再提供空参构造器
    • 构造器之间也存在着重载(看形参列表:参数个数、参数类型)
    • 一个类中至少有一个构造器
  4. 属性的赋值过程(先后顺序)

    默认初始化值——显式赋值——构造器中赋值——通过“对象.属性”或“对象.方法”的方式赋值

类的成员4——代码块

  1. 代码块(初始化块):作用:初始化类、对象

  2. 格式:{ }

  3. 只能用static修饰,可以根据是否用static修饰分为静态代码块和非静态代码块

——静态代码块:static { }

​ ①随着类的加载而执行,且只执行一次

​ ②可以在其中初始化类的信息(只能调用静态的属性或方法)

——非静态代码块:{ }

​ ①随着对象的创建而执行,每创建一个对象,就会执行一次

​ ②初始化对象的属性或方法

  1. 属性赋值的方法及先后顺序:默认初始化值——显式初始化/代码块初始化(谁声明在前,谁先)——构造器赋值——对象.属性/方法

类的成员5:内部类

  1. 在一个类A内部再声明一个类B(A——外部类,B——内部类)

  2. 分类: 成员内部类:静态成员内部类(static修饰)、非静态成员内部类【类似于方法,并列结构】

​ 局部内部类:在方法内、代码块内、构造器内的

————成员内部类:从两个角度看它的使用——作为外部类的成员【可以调用外部类的结构;被static、权限修饰符修饰】 and 是一个类【可以定义属性、方法、构造器等;被final、abstract修饰】

​ ①如何实例化内部成员类:

​ ②如何调用外部类的结构:尤其注意重名的时候的使用

————开发中局部内部类的使用:在方法中用得较多

//返回一个实现了Interface1接口的类的对象
public Interface1 getInterfaca(){
    //创建了一个实现了Interface1接口的类:局部内部类
    //方式一:
    class MyInterface1 implements Interface1{
        
    }
    return new MyInterface1();
    
    //方式二:
    //return new MyInterface1(){}
    
}
UE4/5编译报错MSB3073终极解决指南:从路径检查到MSVC版本降级 本文针对UE4/5开发中常见的MSB3073编译报错,提供了一套从根源到实战的终极解决指南。文章系统性地讲解了错误成因,并分层次指导排查路径字符、环境变量、MSVC版本兼容性、权限冲突等核心问题,重点介绍了通过降级MSVC编译器版本等关键操作来彻底解决此编译难题。 阅读详情

相关推荐

浙江大学Fast-Lab从0制作自主空中机器人公开课教程补充及部分注意事项(适用于ubuntu系统和ROS零基础)

浙江大学Fast-Lab从0制作自主空中机器人公开课纯萌新补充(适用于从没接触过ubuntu系统),记录了一些自己不会的地方以及踩过的坑

qq_39986834的博客 2984

Java知识点复习

最近考Java所以做了点java题复习,总结归纳出一些易错点。 1.下列叙述哪些是正确的? A.final类不可能有子类 B.abstract类中只能有abstract方法 C.abstract类中可以有非abstract方法,但该方法不可以用final修饰。 D.不可以同时用final和abstract修饰一个方法。 #AD 解析:对于B,C,abstract类中可以有非abstract方法,但...

Charles6665的博客 1739

土地利用数据从1972到2023:如何利用Landsat和Sentinel数据构建长期变化监测模型

本文详细解析了如何利用1972至2023年的Landsat和Sentinel遥感数据构建土地利用长期变化监测模型。通过多源数据融合策略、时间序列预处理流程和深度学习算法,实现高精度的土地利用分类与变化检测,为生态评估和城市规划提供科学依据。文章还探讨了验证方法和实际应用案例,展示了长期遥感数据在环境建模中的独特价值。

weixin_28720573的博客 445

java中类的成员之:属性,方法

一、类的属性(或成员变量)Field:*                成员变量   vs  局部变量*           1.相同点:①变量的声明:  数据类型  变量名  = 初始化值;*                     ②都有其作用域,仅在作用域内有效*           2.不同点:*                     ①在类中声明的位置不同*              ...

hzg的博客 5727

Claude Code vs Codex

Claude Code 提供了一个生产就绪(production-ready)的实现,包含良好的错误处理、优雅的关闭逻辑、详细注释和文档,以及内置测试。Claude Code 输出了一个可运行的 Next.js + TypeScript 前端,但错过了一些设计里的黄色主题元素;Codex 则生成自己的版本,没有导出设计中的图片,也没严格遵照设计主题。Codex 完成同样功能,但更简洁直接,文档和注释少一些但功能达标。任务都用同样的提示,使用 TypeScript 实现,并在一天内完成。

weixin_49869937的博客 2388

阿里云Ubuntu部署Steam饥荒联机版服务器:从零到多人联机的完整指南

本文详细介绍了在阿里云Ubuntu系统上部署Steam饥荒联机版服务器的完整流程,包括环境准备、SteamCMD安装、服务端配置、Mod管理及后台运行技巧。通过2核4GB的ECS实例配置和端口设置,实现5人流畅联机体验,适合游戏爱好者快速搭建专属服务器。

weixin_29229261的博客 1024

java类的成员基础解读,属性和方法

全面解读类的成员,属性和方法

Hugh_Guan的博客 1572

Ad hoc网络路由协议概述4——按需路由协议(2)AODV协议 (Ad-hoc on-demand distance vector algorithm protocol)

AODV协议的基本流程。

weixin_42982240的博客 7705

类中的成员属性和成员方法

类中的成员属性与成员方法的分类 公有 私有 受保护 静态 非静态

守护大白菜的博客 5806

【Origin+Python】使用External Python批量出图代码参考2

不使用part2 的代码,自己打开一个origin2022的界面。这里主要介绍一些进阶代码以及使用盗版origin要如何。3 批量绘制相同设置的曲线图。然后就是没有水印的图片了。

zeng001201的博客 1908

Mamba-YOLO实战:环境配置+模型训练+精度调优全流程指南(附Colab代码)

在目标检测领域,一场由状态空间模型引发的技术革新正在悄然改写行业格局。近期国际顶级学术期刊连续发布的YOLOv5_mamba、FER-YOLO等突破性成果,不仅刷新了检测精度记录,更开创了结构化状态空间模型(SSM)与经典检测框架的创新融合范式。当前该领域涌现的十大标杆性研究,已在以下维度取得突破性进展:√ 遮挡目标识别准确率提升38%√ 小样本场景泛化能力增强2.7倍√ 视频流检测延迟降低至17ms√ 多目标交叉干扰抑制效果达SOTA。

2501_90555291的博客 1582

【Java基础】类的成员总结(属性,方法,构造器,代码块,内部类)

类的成员总结 1.属性 属性 = 成员变量 = field = 域、字段 类中属性的使用 属性(成员变量) vs 局部变量 1.相同点: 1.1 定义变量的格式:数据类型 变量名 = 变量值 1.2 先声明,后使用 1.3 变量都有其对应的作用域 2.不同点: 2.1 在类中声明的位置的不同 属性:直接定义在类的一对{}内 局部变量:声明在方法内、方法形参、代码块内、构造器形参、构造器内部的变量 2.2 关于权限修饰符的不同 属性:可以在声明属性时,指明其权限,使用权限修饰符。 ....

唯有努力,方可自信! 1782

MySQL8.2.0下载安装

4、点击No thanks,just start my download,就是只是开始下载的意思,点击下载,等待下载完成。5、新建空白行,或直接双击紧挨的空白行,把复制的mysql的安装路径bin路径复制粘贴过来,确定,确定,确定。1、上面点击finish后,自动勾选了run mysql配置,自动会打开配置页面,点击Next。1、双击安装包,进入安装流程,勾选我同意 I accept,next。2、根据自己需要选择,我选的第二个,可以自己改安装路径。2、默认,点击Next,记住默认端口3306。

m0_59681797的博客 1万+

Java类详解(五大成员)

Java的基本单位是类,类中包含五个部分:变量、方法、构造器、初始化块、内部类自定义方法的五要素:修饰符,返回值类型,方法名,参数列表,方法体[修饰符1 修饰符2 …] 返回值类型 方法名(形式参数列表){Java语句构造器是处于Java类中的一个方法,最大的作用创建对象时执行初始化。①构造方法名不能自定义必须和类名相同。普通的方法首字母小写后续单词字母大写。②构造器可以哟访问权限修饰符但是不能有final,,static,,abstract,synchronized,native修饰符。

baomingshu的博客 2610

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

类的结构:属性、方法、构造器,代码块,内部类

一、类的结构之一:属性 field 类的设计中,两个重要结构之一:属性 对比:属性 vs 局部变量 1.相同点: * 1.1 定义变量的格式:数据类型 变量名 = 变量值 * 1.2 先声明,后使用 * 1.3 变量都有其对应的作用域 2.不同点: 2.1 在类中声明的位置的不同 * 属性:直接定义在类的一对{}内 * 局部变量:声明在类的结构内(方法内、方法形参、代码块内、构造器形参、...

habe33的博客 2966

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

java中类的三大结构:属性、方法、构造器

java中类的三大结构:属性、方法、构造器一、类的成员之一:属性(field)1、语法格式:2、变量的分类:成员变量与局部变量3、成员变量(属性)和局部变量的区别?4、对象属性的默认初始化赋值二、类的成员之二:方法(method)1、什么是方法(method、函数):2、方法的声明格式:3、方法的分类:按照是否有形参及返回值4、方法的调用5、对象数组的内存解析6、方法的重载7、可变个数的形参8、方...

仰望与追逐的博客 7065

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Java面向对象编程【高级篇】之代码块和内部类

本文介绍了Java面向对象编程中的代码块与内部类。代码块分为静态代码块和实例代码块,静态代码块在类加载时自动执行一次,用于类的初始化;实例代码块在每次创建对象时执行,用于对象的初始化。内部类包括成员内部类、静态内部类、局部内部类和匿名内部类。成员内部类可以直接访问外部类的成员,静态内部类只能访问外部类的静态成员,局部内部类定义在方法或代码块中,匿名内部类则用于快速创建子类对象或实现回调函数。这些特性为Java编程提供了更灵活的设计方式。

2402_88461821的博客 820

Java基础:04面向对象——类的成员(属性,方法,构造器,代码块,内部类)

Java基础:04面向对象——类的成员(方法)类的成员之: 方法(method)1. return关键字:2. 方法的重载(overload)3. 可变个数的形参4. 方法参数的值传递机制5. 递归(recursion)方法 类的成员之: 方法(method) ①方法的格式: ②方法的使用: 1. return关键字: 1.使用范围:使用在方法体中 2.作用:① 结束方法 ② 针对于返回值类型的方法,使用"return 数据"方法返回所要的数据。 3.注意点:return关键字后面不可以声明执行语句。

momotouguang的博客 471

Java基础_类中可包含内容【成员变量、成员方法、代码块、内部类】

格式[修饰符1 修饰符2] 返回值类型 方法名(形参列表){语句;……调用对象名.方法名(实参列表)或者类名.方法名(实参列表)分析i. 参数列表(输入):- 形式参数:在方法定义中,接收传入数据。- 实际参数:在方法调用时,实际传入方法的数据。ii. 返回值(输出):- 返回值类型:事先约定的返回值类型。- 返回值:方法执行完,返回给调用者的数据。iii. Java使用值传递:因此,在一些操作中会出现意料之外的问题,如:交换两个数据。原因:变量的生命周期。

qq_44600808的博客 1242

Java—代码块、内部类

本文介绍了Java类中的代码块和内部类两种重要成分。代码块分为静态代码块(类加载时执行)和实例代码块(对象创建时执行),分别用于初始化和对象资源初始化。内部类包括成员内部类、静态内部类、局部内部类和匿名内部类。重点讲解了成员内部类可以访问外部类成员的特性,以及匿名内部类作为特殊局部内部类的使用场景,包括简化子类对象创建和作为方法参数传递。文章通过具体代码示例演示了静态/实例代码块的执行过程,以及成员内部类和匿名内部类的典型应用方式。

y3245239334的博客 996

java类中的五大成员 内部类

目录java类中的五大成员java内部类 java类中的五大成员 属性 方法 内部类 构造器 代码块 java内部类 public class JavaInnerClass { public static void main(String[] args) { // 创建一个外部类对象 OuterClass outer1 = new OuterClass(); // 创建Java成员内部类 // 说明在Java中,将成员内部类当做

qq_43192537的博客 622

类的编写(变量、方法、代码块、内部类)

Java知识点总结:想看的可以从这里进入 目录2.1 、类的编写2.1.1、变量1、成员变量2、局部变量3、区别4、新特性:var2.1.2、方法1、main方法2、构造方法3、成员方法4、方法递归5、参数2.1.3、代码块2.1.4、 内部类1、成员内部类2、静态内部类3、局部内部类4、匿名内部类 2.1 、类的编写 类(Class)是封装对象属性和行为的载体,是一个用于创建实例对象的模板,它将对象的共同特征和行为抽象出来,用成员变量表示事物的属性,用方法描述具体的行为,从而形成类。而通过new关键字

yu的博客 1349

Java-类的五大成员

Java学习笔记类的五大成员。

rapkingbo的博客 1497

Java类-五大核心成分解析(内部类详解)

成员内部类:适合紧密关联外部类实例的场景。静态内部类:独立于实例,适合工具类。局部内部类:临时定义在方法内,访问局部变量。匿名内部类:简洁实现接口或类,用于一次性任务。在实际开发中,选择内部类类型取决于需求:优先考虑静态内部类以减少内存开销,匿名内部类用于简化代码。注意,内部类会增加编译后的类文件数量,可能影响性能。建议根据具体场景合理使用。

m0_56561113的博客 1686

Java类及类的成员

Java类及类的成员,属性, 类和对象 类的结构之一:属性 类的结构之二:方法

qq_22002457的博客 1428

JAVA类及类的成员

1.属性 2.方法 3.构造器 4.代码块 5.内部类

weixin_49329785的博客 2029
上一篇: Java面向对象编程思维导图
下一篇: Selenium+Java 自动化测试框架配置
Etlevent
博客等级 码龄6年 5粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Etlevent

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值