Java学习路线(7)——面向对象基础

news2025/5/21 19:02:13

1、概念

  • 对象: 是实际存在的具体实例。
  • 类: 是对象共同特征的描述 。

2、类的组成

  • 成员变量
    成员变量是类中的全局变量,它的作用域是class car的“{}”之内。
public class car{
	String carTypeName; //汽车类型名称
	double minPrice; //最低价格
	double maxPrice; //最高价格
}
  • 成员方法
    成员方法是类中的全局方法,它的作用域是class car的“{}”之内。
public class car{
	/*成员变量*/
	String carTypeName; //汽车类型名称
	double minPrice; //最低价格
	double maxPrice; //最高价格
	
	/*成员方法*/
	public void getPrice(){	//获取汽车价格
		System.out.println(carTypeName+"的价格为"+minPrice+"~"+maxPrice+"万元");
	}
}
  • 构造器
    构造器是Java用来创建并初始化对象的工具,通常在new对象时,会自动调用无参构造器,若含有参数,则先调用无参构造器,再调用有参构造器,返回对象地址。
    结构: 【修饰符 类名(形参列表){ … }】
    无参构造器: 初始化对象,成员变量赋值默认值。
public class car{
	/*成员变量*/
	String carTypeName; //汽车类型名称
	double minPrice; //最低价格
	double maxPrice; //最高价格
	
	/*构造器*/
	public car(){}
	
	/*成员方法*/
	public void getPrice(){	//获取汽车价格
		System.out.println(carTypeName+"的价格为"+minPrice+"~"+maxPrice+"万元");
	}
}

有参构造器: 初始化对象,同时接收参数列表进行赋值。

public class car{
	/*成员变量*/
	String carTypeName; //汽车类型名称
	double minPrice; //最低价格
	double maxPrice; //最高价格
	
	/*构造器*/
	public car(Stirng carTypeName,double minPrice,double maxPrice){
		this.carTypeName = carTypeName;
		this.minPrice = minPrice;
		this.maxPrice = maxPrice;
	}
	
	/*成员方法*/
	public void getPrice(){	//获取汽车价格
		System.out.println(carTypeName+"的价格为"+minPrice+"~"+maxPrice+"万元");
	}
}

注意: 有参构造器存在,则无参构造器一定要写;若有参构造器不存在,则无参构造器可以不写。

  • 代码块
  • 内部类

3、获取与使用对象

  • 获取对象: 【类名 对象名 = new 类名(…);】
  • 使用对象:
    • 访问属性【对象名.成员变量;】
    • 访问方法 【对象名.成员方法(…);】

4、注意事项

  • 类名要按照规范准则进行命名。
  • Java可以定义多个类,但只有一个类使用public关键字修饰。
  • 成员变量可以不需要初始化,采用默认值规则。

5、对象的内存机制

  • 字节码文件与main方法依次载入方法区。
  • main方法执行创建对象方法即Car car = new Car();并开辟方法区空间存储Car文件信息。
  • 栈内存的main空间中开辟空间存储Car对象堆内存地址。
  • 堆内存开辟Car对象空间,成员方法以方法区地址形式存储。
    在这里插入图片描述

6、this关键字
意义: 代表当前对象的地址。
作用: 用于指定访问当前对象的成员变量和成员方法。
作用域: 构造器与方法。


7、封装
概念: 正确设计对象的属性和方法。
原则: 对象代表什么,就得封装对应的数据,并提供数据对应的行为。
优化封装:

  • 添加private关键字
    为了避免对象被所以修改,所以我们在设计对象时会在成员变量以及成员方法的前面添加一个private(私有的)修饰符,它的作用域是当前类中使用。
  • 添加public修饰的getter、setter方法暴露取值与赋值行为。

问:如何理解封装的原则呢?
答:例如狗吃骨头,一般我们说的是狗—吃—骨头。在面向对象中,狗是调用者,吃是行为,骨头是被调用者,那么吃是骨头的对象行为,狗调用骨头吃的行为,达到狗吃骨头的目的,因为吃是个不特定动作,只有在具体对象上才有具体含义,所以骨头具有吃的行为。


8、JavaBean
概念: JavaBean指的是Java实体类,是真实世界的对象,通过数字化的方式描述该对象。

标准原则

  • 成员变量私有化
  • 提供setter/getter方法
  • 必须提供无参构造器,可选有参构造器

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

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

相关文章

OpenCV在iOS端的集成及Mat和UIImage互相转化(附源码)

OpenCV是一个非常强大的图形处理框架,可以运行在Linux、Windows、Android和Mac OS操作系统上,在自动驾驶、智能家居、人脸识别、图片处理等方面提供了非常丰富且功能强大的api,在图片处理方便,基本上可以满足对图片处理的所有需求…

Fourier分析入门——第4章——频率域

目录 第 4 章 频率域(The Frequency Domain) 4.1 频谱分析(Spectral Analysis) 4.2 物理单位(Physics units) 4.3 笛卡尔坐标形式与极坐标形式对比 4.4 频谱分析的复数形式 4.5 复数值Fourier系数 4.6 复数值的和三角的Fourier系数之间的关系 4.7 2维或多维离散Fouri…

SpringBoot+Redis实现浏览量+1

当用户点击新闻查看详情后,数据库新闻的浏览量字段要加一,当在高并发场景下,很多人查看新闻详情直接操作数据库使浏览量字段加一对数据库压力过大,并且容易造成脏数据,这里结合redis实现浏览量加一。 业务逻辑&#x…

chatgpt赋能Python-pythonfoo

Pythonfoo: 优秀的Python库提高开发效率 Python是一门被广泛应用的动态编程语言,提供了各种各样的库来帮助开发人员完成不同类型的任务。在这些Python库中,Pythonfoo是一款旨在提高开发效率和代码简洁性的出色的Python库。 什么是Pythonfoo&#xff1f…

一种用于超低功耗无线传感器网络的消息传递算法(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 无线传感器网络是由一定数量的无线传感器节点组成的网络系统,各节点可采集环境数据并通过无线通信进行数据传输,目前已广泛应用…

使用cubeMX生成USB HID设备

一,简介 本文主要介绍如何使用stm32F407开发板和cubeMX生成USB FS HID设备,供参考。 二,操作步骤 本次总共分以下几个步骤: 1,创建cubeMX工程,并配置HID,生成工程代码; 2&#xf…

光伏防逆流系统的介绍

安科瑞虞佳豪 5月17日,新疆和田地区洛浦县国家电投洛浦光伏电站,今年2月刚刚并网发电的200兆瓦光伏发电项目坐落于戈壁滩上,占地5500亩的368004块光伏面板在阳光照射下熠熠生辉,为和田地区经济社会发展持续提供着绿色能源。 洛浦…

HNU-操作系统OS-实验Lab6

OS_Lab6_Experimental report 湖南大学信息科学与工程学院 计科 210X wolf (学号 202108010XXX) 实验目的 理解操作系统的调度管理机制熟悉 ucore 的系统调度器框架,以及缺省的Round-Robin 调度算法基于调度器框架实现一个(Stride Scheduling)调度算法来替换缺省的调度算…

第12章_MySQL数据类型精讲

第12章_MySQL数据类型精讲 1. MySQL中的数据类型 类型类型举例整数类型TINYINT、SMALLINT、MEDIUMINT、INT(或INTEGER)、BIGINT浮点类型FLOAT、DOUBLE定点数类型DECIMAL位类型BIT日期时间类型YEAR、TIME、DATE、DATETIME、TIMESTAMP文本字符串类型CHAR、VARCHAR、TINYTEXT、TE…

chatgpt赋能Python-pythondeque函数

Python deque函数:高效地操作双向队列 介绍 在Python中,deque函数是一个非常重要的内置函数,用于创建双向队列。双向队列是一个序列容器,可以从两端添加或删除元素,这使得它成为许多常见问题的解决方案。deque函数是…

Vue--》深入理解 Vue 3 导航守卫,掌握前端路由的灵魂技能!

目录 vue3导航守卫讲解与使用 element-ui的安装与使用 配置路由和设置路径别名 设置登录页面并实现规则跳转 设置导航前置守卫 设置导航后置守卫 其他路由相关操作 vue3导航守卫讲解与使用 导航守卫是在 Vue Router 中提供的一种功能,它允许你在切换路由之前…

chatgpt赋能Python-pythonfirst

PythonFirst:Python编程新手的最佳起点 作为一门简洁而又强大的编程语言,Python在过去的几年中得到了越来越多的关注和应用。它广泛应用于数据分析、人工智能、Web开发、自动化等领域,成为了许多程序员的首选语言。如果你也是刚刚开始接触Py…

有哪些简单而知道的人少的excel操作技巧?

以下是 Excel 里鲜为人知而又简单、逆天的操作技巧: 1. 快速选中数据区域:双击数据区域左上角的方格即可快速选中整个数据区域。 2. 使用自动筛选快速查找和筛选数据:在 Excel 数据表中,使用自动筛选可以快速找到和筛选特定数据…

【Robot Dynamics Lecture Notes学习笔记之浮动基动力学】

Robot Dynamics Lecture Notes学习笔记之浮动基动力学 Contact ForcesSoft Contact Model Contact Forces from Constraints Constraint Consistent DynamicsContact Switches and Impact CollisionsImpulse TransferEnergy Loss 浮动基座系统的广义坐标分别由驱动关节坐标 q j…

小程序-基础加强(二):使用npm包

使用npm包 1.小程序对npm的支持与限制 目前,小程序中已经支持使用npm安装第三方包,从而来提高小程序的开发效率。但是,在小程序中使用npm包有如下3个限制: ①不支持依赖于Node.js内置库的包 ②不支持依赖于浏览器内置对象的包 …

Springboot +spring security,登录表单进阶配置及原理分析

一.简介 登录表单配置实操 二.创建项目 如何创建一个SpringSecurity项目,前面文章已经有说明了,这里就不重复写了。 三.配置默认用户信息 配置文件添加如下用户信息,代码如下: spring:security:user:name: lglbcpassword: 1…

HNU数据结构与算法分析-作业7-算法设计技术

1. (简答题, 10分)请简述分治法所能解决的问题一般具有哪些特征? 2. (简答题, 10分)请简述动态规划法的四个求解步骤。 3. (简答题, 10分)请比较动态规划法和贪心法,并写出两者的区别。 4. (简答题, 10分)请写出分支限界法和回溯法的区别。 二. 算法设计…

chatgpt赋能Python-pythonendswith

Python endswith方法:介绍、用法和示例 在编程中,经常需要查找字符串是否以特定字符结尾。Python提供了一个方便易用的方法——endswith()。 什么是Python endswith()方法? Python endswith()方法是用于检查字符串是否以特定子字符串结尾的…

第六章总结-莫凡商城的注册、登录功能

1.微信小程序表单组件 1.1button按钮组件 type的属性值有三种 primary 绿色default 白色warn 红色 除了这种方式可以设置按钮大小,还有其他的通过视图来控制按钮的方式,因为我们知道,微信小程序的按钮并不都是这三种颜色。其他方式比如把按…

Web APIs之DOM

一.Web API基本认知 二.获取DOM对象 三.操作元素内容 四. 操作元素属性 五.定时器-间歇函数 一、Web API基本认知 *作用和分类 *什么是DOM *DOM树 *DOM对象 1.作用和分类 (1)作用:使用JS去操作html和浏览器 (2&#xff09…