当前位置: 首页 > news >正文

面向对象

面向对象

      • 面向对象
        • 一、什么是对象
        • 二、什么是面向对象
        • 三、对象
        • 四、什么是类
        • 五、实例变量
        • 六、实例方法
        • 七、方法重载(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 早上师兄帮忙看了一眼我画的丑图&#xff…...

buuctf-web-[SUCTF 2018]MultiSQL1

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

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 类的大小是固定的,因此它的大小不能改变。 数组是固定大小的序列容器:它们以严格的线性顺序保存特定数量的元素。 在内部,数组除了包含的元素之外不保留…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

Typeerror: cannot read properties of undefined (reading ‘XXX‘)

最近需要在离线机器上运行软件&#xff0c;所以得把软件用docker打包起来&#xff0c;大部分功能都没问题&#xff0c;出了一个奇怪的事情。同样的代码&#xff0c;在本机上用vscode可以运行起来&#xff0c;但是打包之后在docker里出现了问题。使用的是dialog组件&#xff0c;…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版&#xff0c;莫兰迪调色板清新简约工作汇报PPT模版&#xff0c;莫兰迪时尚风极简设计PPT模版&#xff0c;大学生毕业论文答辩PPT模版&#xff0c;莫兰迪配色总结计划简约商务通用PPT模版&#xff0c;莫兰迪商务汇报PPT模版&#xff0c;…...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型&#xff08;Primitive&#xff09; 和 对象类型&#xff08;Object&#xff09; 两大类&#xff0c;共 8 种&#xff08;ES11&#xff09;&#xff1a; 一、原始类型&#xff08;7种&#xff09; 1. undefined 定…...

DBLP数据库是什么?

DBLP&#xff08;Digital Bibliography & Library Project&#xff09;Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高&#xff0c;数据库文献更新速度很快&#xff0c;很好地反映了国际计算机科学学术研…...