类与对象(this 关键字、构造器)

news/2024/4/26 16:09:07/文章来源:https://blog.csdn.net/weixin_47138646/article/details/129190991

目录

        • 一、面向对象
        • 二、类与对象
        • 三、对象内存图
        • 四、成员变量和局部变量区别
        • 五、this关键字
        • 六、构造器/构造方法

一、面向对象

一种编程思想:也就是说我们要以何种思路,解决问题,以何种形式组织代码

当解决一个问题的时候,面向对象会把事物抽象成对象的概念,就是说这个问题里面有哪些对象,然后给对象赋一些属性和方法,然后让每个对象去执行自己的方法,问题得到解决。

  • 优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护
  • 缺点:性能比面向过程低,因为类调用时需要实例化,开销比较大,比较消耗资源

面向对象,学什么?

  1. 学习自己如何设计对象
  2. 学习已有对象如何使用

二、类与对象

  • 类:一组相关属性和行为的集合(抽象的),可以理解为一张用于创建对象的设计图或者蓝图
    • 属性(成员变量):和定义变量的形式一样,位置不同
    • 行为(成员方法):和方法类似,不过需要去掉static关键字
  • 对象:是根据类创建出的一个具体的实例,一个类可以创建出多个对象
    例子一:设计类
public class Student {String name;//属性int age;//属性/** 行为*/ public void study(){System.out.println("学习java");}
}

创建对象和使用对象的格式:

  1. 创建对格式象:类名 对象名=new 类名();
  2. 变量的使用格式:对象名.变量名;
  3. 方法的使用格式:对象名.方法名(实际参数);

例子二:创建对象和使用对象

public class Main {//在main方法中创建对象public static void main(String[] args) {Student s=new Student();//创建对格式象:类名 对象名=new 类名();s.age=18;//变量的使用格式:对象名.变量名;s.name="stef";//变量的使用格式:对象名.变量名;System.out.println(s.age);System.out.println(s.name);s.study();//方法的使用格式:对象名.方法名(实际参数);}
}

三、对象内存图

在这里插入图片描述
在这里插入图片描述

四、成员变量和局部变量区别

在这里插入图片描述

五、this关键字

首先this关键字是什么呢?

代表当前类对象的引用地址,也就是说通过this可以定位到当前对象

例子:
这是一个类,里面只有一个方法,用来打印this的值

public class TestThis {/** 行为*/public void show(){System.out.println("我是this地址"+this);}
}

在主方法中调用类的方法并打印对象

public class Main {public static void main(String[] args) {TestThis test1=new TestThis();System.out.println("我是test1对象地址"+test1);test1.show();TestThis test2=new TestThis();System.out.println("我是test2对象地址"+test2);test2.show();}
}

运行结果:

我是test1对象地址TestThis@682a0b20
我是this地址TestThis@682a0b20
我是test2对象地址TestThis@3d075dc0
我是this地址TestThis@3d075dc0

结论:

可以看到打印test1对象和test1对象所调用对象中打印this的值一样,test2对象同理,但tes1对象和test2对象不一样。
可见:this代表当前类对象的引用地址,也就是说通过this可以定位到当前对象

六、构造器/构造方法

用于初始化一个新建的对象
构造、创造对象时,所调用的方法

构造器格式:

  1. 方法名与类名相同,大小写也要一致
  2. 没有返回值类型,连void都没有
  3. 没有具体的返回值(不能由return带回结果数据)

注意事项:

如果没有定义构造方法,系统将给出一个默认的无参数构造方法
如果定义了构造方法,系统将不再提供默认的构造方法
构造方法也是方法,允许重载关系出现
推荐:无参数构造方法,和带参数构造方法,都自己手动给出

构造器示例:

public class Student {int age;String name;//无参构造public Student(){}//有参数构造public Student(String name,int age){this.name=name;this.age=age;}
}

使用构造器创建对象示例:

Student s1=new Student();//使用无参构造器创建对象
Student s2=new Student("stef",18);//使用有参数构造器创建对象,进行初始化

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分享app的测试技巧

前言 今天笔者想和大家来唠唠app测试,现在的app有非常的多,这些app都是需要经过测试之后才能发布到应用市场中,app已经成为了我们日常生活中不可或缺的一部分了,但它的功能必须强大,才能受到消费者的重视,…

已解决from cryptography.hazmat.backends import default_backend导包错误

已解决Python连接FTPS抛出异常:CryptographyDeprecationWarning: Python 3.6 is no longer supported by the Python core team. Therefore, support for it is deprecated in cryptography. The next release of cryptography (40.0) will be the last to support …

pyaudio声卡信息中hostApi是什么意思?

hostApi是声卡驱动协议,声卡驱动模式,有如下很多类。下面的类型是网上找的PortAudio的类,不不确定是不是python的。typedef enum PaHostApiTypeId{paInDevelopment0, /* use while developing support for a new host API */paDirectSound1,p…

深度学习之“制作自定义数据”--torch.utils.data.DataLoader重写构造方法。

深度学习之“制作自定义数据”–torch.utils.data.DataLoader重写构造方法。 前言: ​ 本文讲述重写torch.utils.data.DataLoader类的构造方法,对自定义图片制作类似MNIST数据集格式(image, label),用于自己的Pytorc…

推荐系统从入门到入门(3)——基于MapReuduce与Spark的分布式推荐系统构建

本系列博客总结了不同框架、不同算法、不同界面的推荐系统,完整阅读需要大量时间(又臭又长),建议根据目录选择需要的内容查看,欢迎讨论与指出问题。 目录 系列文章梗概 系列文章目录 三、MapReduce 1.MapReduce详…

【视频】海康摄像头、NVR网络协议简介

1、软硬件整体架构 2、涉及的网络协议 3、协议简介 3.1 海康私有协议 设备发现SADP:进行设备的发现、激活、修改网络参数、忘记密码等; SDK:4200、系统平台的接入前端设备,协议不对外开放,但对外提供接口库; ISAPI:Intelligent Security API(智能安全API),基于HTTP传输…

2023新的一年软件测试还值得学习吗?

最近因为疫情等各种原因,大厂裁员,失业等等频频受到关注。不解释,确实存在,各行各业都很难,但是,说软件测试行业不吃香,我还真不认同(不是为培训机构说好话,大环境不好&a…

Odoo丨Odoo框架源码研读三:异常处理与定制化开发

Odoo丨Odoo框架源码研读三:异常处理与定制化开发 Odoo源码研读的第三期内容:异常处理与定制化开发。 *异常处理* Odoo中的Exception是对Python内置异常做了继承和封装,设定了自己核心的几个Exception。 而对异常的处理和Python内置异常的…

Spring 之bean的生命周期

文章目录IOCBean的生命周期运行结果实例演示实体类实例化前后置代码初始化的前后置代码application.xml总结今天我们来聊一下Spring Bean的生命周期,这是一个非常重要的问题,Spring Bean的生命周期也是比较复杂的。IOC IOC,控制反转概念需要…

Flutter+【三棵树】

定义 在Flutter中和Widgets一起协同工作的还有另外两个伙伴:Elements和RenderObjects;由于它们都是有着树形结构,所以经常会称它们为三棵树。 这三棵树分别是:Widget、Element、RenderObject Widget树:寄存烘托内容…

SigmaPlot科学绘图工具:ROC曲线分析及AUC组间差异的显著性分析

目的 初步使用SigmaPlot科学绘图工具;进行ROC曲线绘制并分析检验变量AUC组间差异性是否显著 软件下载及安装 SigmaPlot下载安装按照这个教程即可:https://www.hhkxxw.com/24799.html 快速通道:SigmaPlot下载链接:百度网盘链接…

DC220V冲击继电器RCJ-3

系列型号 RCJ-2型冲击继电器; RCJ-2/48VDC冲击继电器 RCJ-2/110VDC冲击继电器 RCJ-2/220VDC冲击继电器 RCJ-2/100VAC冲击继电器 RCJ-2/127VAC冲击继电器 RCJ-2/220VAC冲击继电器 RCJ-3/220VAC冲击继电器 RCJ-3型冲击继电器 RCJ-3/127VAC冲击继电器 RCJ-3/100VAC冲…

FastCGI sent in stderr: "PHP message: PHP Fatal error

服务器php7.2卸载安装7.4之后,打开网站一直无法访问,查看nginx错误日志发现一直报这个错误:2023/02/23 11:12:55 [error] 4735#0: *21 FastCGI sent in stderr: "PHP message: PHP Fatal error: Uncaught ReflectionException: Class translator does not exist in …

Python四大主题之一【 Web】 编程框架

目前Python的网络编程框架已经多达几十个,逐个学习它们显然不现实。但这些框架在系统架构和运行环境中有很多共通之处,本文带领读者学习基于Python网络框架开发的常用知识,及目前的4种主流Python网络框架:Django、Tornado、Flask、Twisted。 …

100%BIM学员的疑惑:不会CAD可以学Revit吗?

在新一轮科技创新和产业变革中,信息化与建筑业的融合发展已成为建筑业发展的方向,将对建筑业发展带来战略性和全局性的影响。 建筑业是传统产业,推动建筑业科技创新,加快推进信息化发展,激发创新活力,培育…

web客户端-websocket

1、websocket简介 WebSocket是HTML5开始提供的一种在单个TCP连接上进行全双工通讯的协议。 WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手&#xff0c…

python3.11.2安装 + pycharm安装

下载 :https://www.python.org/ 2.双击下载的软件: 3.进入安装界面 下一步,点击 是 上一步点击后就看到如下: 安装成功了,接下来检测一下:cmd 安装pycharm PyCharm是一种Python IDE(Integr…

Apifox-比postman更优秀的接口自动化测试平台

一、Apifox介绍 Apifox 是 API 文档、API 调试、API Mock、API 自动化测试一体化协作平台,定位 Postman Swagger Mock JMeter。通过一套系统、一份数据,解决多个系统之间的数据同步问题。只要定义好 API 文档,API 调试、API 数据 Mock、A…

你真的需要文档管理软件吗?

什么是文档管理软件? 文档管理软件 (DMS) 是一种数字解决方案,可帮助组织处理、捕获、存储、管理和跟踪文档。 通过严格管理您的关键业务信息,您可以开发以稳定、可预测、可衡量的方式启动、执行和完成的流程。 如果没有功能齐全的文档管理软…

从事Python自动化测试,30岁熬到月薪20K+,分享我的多年面试经…

年少不懂面试经,读懂已是测试人。 大家好,我是小码哥,一名历经沧桑,看透互联网行业百态的测试从业者,经过数年的勤学苦练,精钻深研究,终于从初出茅庐的职场新手成长为现在的测试老鸟&#xff0…