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

news/2024/11/29 6:26:01/

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.ppmy.cn/news/76491.html

相关文章

Java使用xlsx-streamer和EasyExcel解决读取超大excel数据时OutOfMemoryError的问题

解决读取超大excel数据时OutOfMemoryError的问题 前言关于Excel相关技术场景复现与问题定位问题代码读取50MB40万行数据读取84MB100万行数据 解决方案一:xlsx-streamer引入依赖:示例代码:加载数据效果耗费资源对比 解决方案二:Eas…

面试时,公司的什么表现让你一看就知道不靠谱?

01 面试的时候让你根据他们需要做方案的公司一律不靠谱,百分之99是套方案的。 你想如果业务负责人自己都不知道自己要干什么,要么他自己没想清楚,要不他本身是水货!这样的leader怎么爬上来的不用说了吧,而且跟着他学不…

怎么成为优秀的软件工程师,而不是优秀的码农?

作为软件行业的从业者,每个人都希望最终成为优秀的软件工程师,而不仅仅是码农。一个码农只关注于编写代码和解决问题,而一个软件工程师则涉及到更广泛的职责和技能。 以下是一些要点,可以帮助你脱颖而出,成为一个优秀…

代码随想录算法训练营第三十九天| 62.不同路径 63. 不同路径 II

文章目录 62.不同路径思路代码总结 63. 不同路径 II思路代码总结 62.不同路径 思路 初始化分析很重要 代码 自己写的第一版 class Solution { public:int uniquePaths(int m, int n) {// dp[i,j]: 到达[i,j]有多少种方法// dp[m,n] dp[m-1,n] dp[m,n-1];// dp[0,0] 1;.…

<Linux开发>驱动开发 -之-pinctrl子系统

<Linux开发>驱动开发 -之-pinctrl子系统 交叉编译环境搭建: <Linux开发> linux开发工具-之-交叉编译环境搭建 uboot移植可参考以下: <Linux开发> -之-系统移植 uboot移植过程详细记…

Nginx配置带证书代理https

在nginx.conf同级目录下创建文件夹ssl,用来放置证书,把访问对方需要的证书上传到ssl文件夹下,若证书是pem或cer在nginx.conf加上证书即可;若证书是.p12的,则先把证书转换成.pem格式的证书,分别执行下面命令…

C++11 -- 类的新功能

文章目录 类的新功能默认成员函数类成员变量初始化强制生成默认函数的关键字default禁止生成默认函数的关键字delete继承和多态中的final和override关键字 类的新功能 默认成员函数 原来在C类中,有6个默认成员函数: 1: 构造函数 2: 拷贝构造函数 3: 拷贝赋值重载 4: 析构函数…

Leetcode 538. 把二叉搜索树转换为累加树(Morris 遍历)

Leetcode 538. 把二叉搜索树转换为累加树(Morris 遍历)题目 给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或…