面向对象
面向对象
- 面向对象
- 一、什么是对象
- 二、什么是面向对象
- 三、对象
- 四、什么是类
- 五、实例变量
- 六、实例方法
- 七、方法重载(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 类的大小是固定的,因此它的大小不能改变。 数组是固定大小的序列容器:它们以严格的线性顺序保存特定数量的元素。 在内部,数组除了包含的元素之外不保留…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...

算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...

GitFlow 工作模式(详解)
今天再学项目的过程中遇到使用gitflow模式管理代码,因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存,无论是github还是gittee,都是一种基于git去保存代码的形式,这样保存代码…...