面向对象
面向对象
- 面向对象
- 一、什么是对象
- 二、什么是面向对象
- 三、对象
- 四、什么是类
- 五、实例变量
- 六、实例方法
- 七、方法重载(overload)
- 八、构造方法
- 九、对象的创建过程
- 十、构造方法重载
- 十一、this关键字
面向对象
一、什么是对象
万物皆对象。
二、什么是面向对象
面向对象是一种编程思想。
一般情况下是与面向过程对比来说的。
面向过程:
将大象装进冰箱。三步。一般用来解决相对简单的业务问题,代码量较少。
面向对象:
使用相应的思想去解析该问题。
- 大象:大小
- 冰箱:容积、入口
- 执行者:推
面向对象思想一般用来解决大型项目,以及比较复杂业务问题。代码量较多。
三、对象
对象具备一定的特征和行为。
特征:一般使用名词。又称为属性。代表对象有什么。例如:大小、颜色等
行为:一般使用动词。又称为方法。代表对象能做什么。例如:吃、跑等
四、什么是类
类是对象产生的模板。具备有相同的特征和行为的对象,所抽取的共同的特征和行为的模板称为类。
/*** 狗*/
public class Dog {// 属性(特征)String brand; // 品种int age; // 年龄String sex; // 性别String furColor; // 毛色// 方法,行为public void eat() {System.out.println("正在吃...");}public void sleep() {System.out.println("正在睡...");}
}
public class Demo1 {public static void main(String[] args) {// 创建一只狗Dog dog1 = new Dog();dog1.brand = "二哈";dog1.age = 2;dog1.sex = "公";dog1.furColor = "黑白";System.out.println("品种为:" + dog1.brand + ",年龄为:" + dog1.age + ",性别为:" + dog1.sex + ",颜色为:" + dog1.furColor);dog1.eat();dog1.sleep();Dog dog2 = new Dog();dog2.brand = "金毛";dog2.age = 1;dog2.sex = "公";dog2.furColor = "金色";System.out.println("品种为:" + dog2.brand + ",年龄为:" + dog2.age + ",性别为:" + dog2.sex + ",颜色为:" + dog2.furColor);dog2.eat();dog2.sleep();}
}
五、实例变量
对象也叫实例,属性也叫特征、字段(field)、实例变量。
一般变量需要先赋值后使用,实例变量(属性)不需要赋值,可以直接使用,会有默认值。默认值和数组的默认值相同。
public class Demo03 {public static void main(String[] args) {Student s1 = new Student();System.out.println(s1.score); // 打印默认值0}
}
局部变量 | 实例变量 | |
---|---|---|
定义位置 | 定义在方法的内部 | 定义在类的内部,方法的外部 |
默认值 | 没有默认值,先赋值后使用 | 有默认值,与数组相同 |
使用范围 | 从定义的行到其结构结束 | 本类内部有效 |
命名冲突 | 局部变量不允许重名 | 不能与实例变量同名,但是可以与局部变量同名。局部变量优先 |
六、实例方法
实例方法在定义时不能加static。
分为方法声明和方法实现。
方法声明指方法的名称、返回值、参数列表等。
方法的实现即大括号中间的内容。
public class Student {int score;public void printScore() // 方法声明// 方法实现{int score = 5;System.out.println(score);System.out.println(this.score);}
}
七、方法重载(overload)
方法重载是指方法名称相同,参数列表(类型、个数、顺序)不同。与返回值类型、访问修饰符无关。
系统根据参数列表去找到相应的方法进行调用。
public class Person {// 食物public void eat(String s) {}// 药物public void eat(int n) {}public void eat(int n, String m) {}public void eat(String n, int m) {}// 口香糖public void eat(double n) {}
}
八、构造方法
是类中的一个特殊方法,用来创建对象。
特点:
- 与类名完全相同
- 没有返回值类型
- 不能使用点号调用,需要使用new 关键字调用
- 如果没有在类中定义构造方法,则编译器会自动提供无参构造方法。
public class Cat {String name;public Cat() {System.out.println("被调用");}// 不报错,可以存在,但是不应该如此定义一个普通方法
// public void Cat() {
// System.out.println("普通方法");
// }
}
public class Demo05 {public static void main(String[] args) {Cat cat = new Cat();}
}
九、对象的创建过程
步骤:
- 分配内存空间
- 属性的初始值和默认值
- 构造方法调用
- 将对象的地址赋值到变量中
十、构造方法重载
可以创建带参数的构造方法,此方法传入的参数,可以使用属性来保存。
注意:如果手动创建的构造方法,那么自带的默认的无参构造方法就没有。
public class Student {String name;int age;public Student(String n) {// 保存传入的参数name = n;}public void introduce() {System.out.println("学生的姓名为:"+name+"学生的年龄为:"+age);}
}public class Demo1 {public static void main(String[] args) {Student s = new Student("张三");s.introduce();}
}
有参构造方法可以减少给属性赋值的代码,强制要求在创建时必须要给属性赋值,才能正确使用。
public class Student {String name;int age;public Student() {}public Student(String n) {// 保存传入的参数name = n;}public Student(String n, int a) {// 保存传入的参数name = n;age = a;}public void introduce() {System.out.println("学生的姓名为:"+name+"学生的年龄为:"+age);}
}
十一、this关键字
当构造方法中,变量名与属性相同时,应该使用this关键字调用属性。
public class Student {String name;int age;public Student(String name, int age) {// 保存传入的参数this.name = name;this.age = age;}public void introduce() {System.out.println("学生的姓名为:"+name+"学生的年龄为:"+age);}
}
this关键字表示当前类的对象。有以下用法:
1、调用当前对象属性(如上代码)
2、调用当前对象的方法。
3、调用其他构造方法
public class Student {String name;int age;String sex;public Student(String name, int age) {// 保存传入的参数this.name = name;this.age = age;}public Student(String name, int age, String sex) {// 调用其他构造方法this(name, age);this.sex = sex;}public void introduce() {System.out.println("学生的姓名为:"+name+"学生的年龄为:"+age);}public void m1() {System.out.println("方法m1被调用,也进行自我介绍");// 调用当前对象的方法,哪个对象调用m1方法,this就指代哪个对象。this.introduce();}
}
相关文章:
面向对象
面向对象面向对象一、什么是对象二、什么是面向对象三、对象四、什么是类五、实例变量六、实例方法七、方法重载(overload)八、构造方法九、对象的创建过程十、构造方法重载十一、this关键字面向对象 一、什么是对象 万物皆对象。 二、什么是面向对象 面向对象是一种编程思想。…...

mpi4py 运行过程中出现Read -1, expected xxx, errno = 1 解决方案
目录 问题描述 代码1(串行) 代码2(并行) 代码2执行时所用指令 错误信息 解决方案 解决方案1 解决方案2 问题描述 今天正在学习使用mpi4py,在对比运行以下2个代码时疯狂报错: 代码1(串…...
PMP考前冲刺3.07 | 2023新征程,一举拿证
题目1-2:1.某公司启动了一个新型智能家电研发敏捷项目,组织上聘请了一位敏捷管理专业人士。在项目执行过程中,敏捷团队反馈用户故事包含的信息不足,无法理解需求,敏捷管理专业人应该怎么做?A.教导产品负责人…...
60条Python日常工作中的高频写法,收藏
一、 数字 1 求绝对值 绝对值或复数的模 In [1]: abs(-6) Out[1]: 62 进制转化 十进制转换为二进制: In [2]: bin(10) Out[2]: 0b1010十进制转换为八进制: In [3]: oct(9) Out[3]: 0o11十进制转换为十六进制: In [4]: hex(15) Out[4]:…...
(小甲鱼python)函数笔记合集七 函数(XI)总结 python函数的函数文档、类型注释、内省详解
一、基础复习 函数的基本用法 创建和调用函数 函数的形参与实参等等函数的几种参数 位置参数、关键字参数、默认参数等函数的收集参数*args **args 解包参数详解函数中参数的作用域 局部作用域 全局作用域 global语句 嵌套函数 nonlocal语句等详解函数的闭包(工厂函…...

Leetcode是什么
力扣(LeetCode)是领扣网络旗下专注于程序员技术成长和企业技术人才服务的品牌。源自美国硅谷,力扣为全球程序员提供了专业的IT 技术职业化提升平台,有效帮助程序员实现快速进步和长期成长。 此外,力扣(Leet…...
2023-03-07 MySQL—基于规则优化-子查询优化
简介 在使用MySQL编写查询语句时,有时候无法避免的会写出一些执行起来十分耗时、耗性能的语句,但是MySQL在执行这些语句的时候,还是会竭尽全力的做出一些优化,把这个很糟糕的语句转换成某种可以比较高效执行的形式,这个过程也可以被称作查询重写 条件化简 我们编写查询…...

Rocketmq技术详解
Rocketmq技术详解 运维部署 docker-compose.yml version: 3.5 services:rmqnamesrv:image: foxiswho/rocketmq:servercontainer_name: rmqnamesrvports:- 9876:9876volumes:- ./logs:/opt/logs- ./store:/opt/storenetworks:rmq:aliases:- rmqnamesrvrmqbroker:image: foxisw…...

TeeChart VCL/FMX v2023 crack
TeeChart VCL/FMX v2023 crack TeeChart Pro VCL允许您为所有领域(包括商业、工程、金融、统计、科学、医疗、实时和网络)创建通用和专用图表和绘图应用程序。TeeChart Pro VCL具有多种图表类型的图表库,包括2D或3D线条、条形图、水平条、区域、点、饼图、箭头、气泡…...

[Java·算法·困难]LeetCode32. 最长有效括号
每天一题,防止痴呆题目示例分析思路1题解1分析思路2题解2分析思路3题解3👉️ 力扣原文 题目 给你一个只包含 ( 和 ) 的字符串,找出最长有效(格式正确且连续)括号子串的长度。 示例 输入:s "(()&q…...
pytorch如何搭建一个最简单的模型,
一、搭建模型的步骤 在 PyTorch 中,可以使用 torch.nn 模块来搭建深度学习模型。具体步骤如下: 定义一个继承自 torch.nn.Module 的类,这个类将作为我们自己定义的模型。 在类的构造函数 __init__() 中定义网络的各个层和参数。可以使用 to…...

JS实现css的hover效果,兼容移动端
Hi I’m Shendi JS实现css的hover效果,兼容移动端 功能概述 CSS的hover即触碰时触发,在电脑端鼠标触碰,移动端手指触摸 有的时候光靠css实现不了一些效果,例如元素触发hover,其他元素触发动画效果,所以需要…...

企业微信的后台怎么进入和管理?
企业微信管理后台,只有企业的管理员才可以进企业微信后台,普通员工想要进入后台、可以联系管理员将你设置为后台管理员。 一、怎么进入企业微信后台 管理员进入企业微信后台有两种路径; 路径一: 企业管理员直接在浏览器搜索企…...

【2223sW2】LOG2
写在前面 好好学习,走出宿舍,走向毕设! 一些心路历程记录,很少有代码出现 因为鬼知道哪条代码到时候变成毕设的一部分了咧,还是不要给自己的查重挖坑罢了 23.3.2 检验FFT 早上师兄帮忙看了一眼我画的丑图ÿ…...

buuctf-web-[SUCTF 2018]MultiSQL1
打开界面,全部点击一遍,只有注册和登录功能可以使用注册一个账号,注册admin提示用户存在,可能有二次注入,注册admin自动加了一个字符,无法二次注入,点击其他功能点换浏览器重新登录后࿰…...

GitLab创建仓库分配权限
文章目录创建仓库分配权限参考资料创建仓库 点击“New project”创建新项目 分配权限 点击左侧菜单栏“Members”成员,菜单 “Invite member”邀请成员,添加人员;“Invite group”邀请组织,添加一个组织所有成员下面输入框搜索…...

代码随想录-51-110.平衡二叉树
目录前言题目1.求高度和深度的区别节点的高度节点的深度2. 本题思路分析:3. 算法实现4. pop函数的算法复杂度5. 算法坑点前言 在本科毕设结束后,我开始刷卡哥的“代码随想录”,每天一节。自己的总结笔记均会放在“算法刷题-代码随想录”该专…...

项目实战典型案例27——对生产环境以及生产数据的敬畏之心
对生产环境以及生产数据的敬畏之心一:背景介绍总结升华一:背景介绍 本篇博客是对项目开发中出现的对生产环境以及生产数据的敬畏之心行的总结并进行的改进。目的是将经历转变为自己的经验。通过博客的方式分享给大家,大家一起共同进步和提高…...

如何查找你的IP地址?通过IP地址能直接定位到你家!
我们ip地址分为A、B、C、D、E共5类,每一类地址范围不同,从A到Eip地址范围依次递减,其中哦,D和E是保留地址,我们用不了。A、B、C3类地址很多都被美国这样的西方国家分走了,而留给我们的就剩有限的地址了&…...

Containers--array类
Array 类 简介 Array 类是一个固定大小的数组,它的大小在编译时就已经确定了。Array 类的大小是固定的,因此它的大小不能改变。 数组是固定大小的序列容器:它们以严格的线性顺序保存特定数量的元素。 在内部,数组除了包含的元素之外不保留…...

Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...

解读《网络安全法》最新修订,把握网络安全新趋势
《网络安全法》自2017年施行以来,在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂,网络攻击、数据泄露等事件频发,现行法律已难以完全适应新的风险挑战。 2025年3月28日,国家网信办会同相关部门起草了《网络安全…...

【C++】纯虚函数类外可以写实现吗?
1. 答案 先说答案,可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...
LLaMA-Factory 微调 Qwen2-VL 进行人脸情感识别(二)
在上一篇文章中,我们详细介绍了如何使用LLaMA-Factory框架对Qwen2-VL大模型进行微调,以实现人脸情感识别的功能。本篇文章将聚焦于微调完成后,如何调用这个模型进行人脸情感识别的具体代码实现,包括详细的步骤和注释。 模型调用步骤 环境准备:确保安装了必要的Python库。…...

五子棋测试用例
一.项目背景 1.1 项目简介 传统棋类文化的推广 五子棋是一种古老的棋类游戏,有着深厚的文化底蕴。通过将五子棋制作成网页游戏,可以让更多的人了解和接触到这一传统棋类文化。无论是国内还是国外的玩家,都可以通过网页五子棋感受到东方棋类…...
Spring Boot + MyBatis 集成支付宝支付流程
Spring Boot MyBatis 集成支付宝支付流程 核心流程 商户系统生成订单调用支付宝创建预支付订单用户跳转支付宝完成支付支付宝异步通知支付结果商户处理支付结果更新订单状态支付宝同步跳转回商户页面 代码实现示例(电脑网站支付) 1. 添加依赖 <!…...