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

news2024/10/6 9:00:30

目录

        • 一、面向对象
        • 二、类与对象
        • 三、对象内存图
        • 四、成员变量和局部变量区别
        • 五、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.coloradmin.cn/o/366344.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

23年六级缓考

【【六级674】3月六级规划+许愿成功的小伙伴记得来还愿啦!!(四六级延期考2周冲刺计划)】https://www.bilibili.com/video/BV1nx4y1w7fz?vd_source=5475f4f6010a81c8e6d4789af8e1a20f 作文

「TCG 规范解读」初识 TPM 2.0 库续一

可信计算组织(Ttrusted Computing Group,TCG)是一个非盈利的工业标准组织,它的宗旨是加强在相异计算机平台上的计算环境的安全性。TCG于2003年春成立,并采纳了由可信计算平台联盟(the Trusted Computing Platform Alli…

前端预防XSS攻击全攻略

如何防止XSS攻击 一、是撒子 XSS攻击(跨站点脚本攻击),就是黑客恶意篡改你网页的前端代码,在里面注入一些恶意的 htmljavascript的脚本,并在你的浏览器内运行,获取你的信息,或者进行一些恶意操…

3年自动化测试经验,面试连20K都拿不到,现在都这么卷了吗····

我的情况 大概介绍一下个人情况,女,本科,三年多测试工作经验,懂python,会写脚本,会selenium,会性能,会自动化,然而到今天都没有收到一份offer!从2022年11月1…

Html 代码学习

场景:在页面中插入音频 代码 常见属性: src 音频的路径 controls 显示播放的控件 autoplay 自动播放 loop 循环播放 场景:在页面中插入视频 代码 常见属性: src 路径 controls 显示播放的控件 autoplay 自动播放 要配合muted 例如 autoplay muted loop 循环播放 链接 /…

MySQL 的体系结构、引擎与索引

MySQL的引擎与体系结构 体系结构 连接层 最上层是一些客户端和链接服务,主要完成一些类似于连接处理、授权认证、及相关的安全方案。服务器也会为安全接入的每个客户端验证它所具有的操作权限 服务层 第二层架构主要完成大多数的核心服务功能,如SQL…

合宙Air780E|FTP|内网穿透|命令测试|LuatOS-SOC接口|官方demo|学习(18):FTP命令及应用

1、FTP服务器准备 本机为win11系统,利用IIS搭建FTP服务器。 搭建方式可参考博文:windows系统搭建FTP服务器教程 windows系统搭建FTP服务器教程_程序员路遥的博客-CSDN博客_windows服务器安装ftp 设置完成后,测试FTP(已正常访问…

Nginx配置代理解决本地html进行ajax请求接口跨域问题

场景 Nginx在Windows下载安装启动与配置前后端请求代理: Nginx在Windows下载安装启动与配置前后端请求代理_霸道流氓气质的博客-CSDN博客 上面基于Vue的web项目进行代理请求后台接口。 如果是进行异地接口联调,访问后台接口都需要通过vpn访问&#x…

【Maven】(二)使用 Maven 创建并运行项目、聊聊 POM 中的坐标与版本号的规则

文章目录1.前言2.hello-world2.1.Archetype 创建2.2.使用 IDE 创建2.3.Maven的目录结构3.pom的基本组成3.1.Maven坐标的概念与规则3.2.版本号规则2.3.打包成可运行的JAR4.结语1.前言 本系列文章记录了从0开始到实战系统了解 Maven 的过程,Maven 系列历史文章&#…

注意啦!如何通过广告吸引客户直接下单?

2023年跨境电商越来越突出,据业内相关人士称,在未来几年与跨境电商相关的政策仍会继续倾斜甚至加大力度,因此各行各业都响应政策,在新政策落实之前致力于平台的转型升级,做新时代创新型的高质量发展,其实细…

怎么找回电脑上删除的图片?

怎么找回电脑删除的图片?图片作为一种非常简单方便的文件,经常被用来辅助我们的日常工作和学习。但在我们整理电脑时,如果我们不小心手一抖就删除了一些重要的图片,遇到这种事我们要如何才能恢复呢? 众所周知,简单的删除并不会完…

iOS 绿幕技术

绿幕(green screen)技术,又称 chroma key effect,实际上是将图片上指定颜色设置为透明的图形处理技术,这些透明区域也可以被任意背景图片替换。 这种技术在 视频合成中被广泛使用。iOS 中,通过 CoreImage …

LeetCode 622.设计循环队列

设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里&a…

flask框架(下)

文章目录flask框架(下)werkzeug简介请求上下文flask 处理方案回到 wsgi_app 方法中push 源码总结补充flask框架(下) werkzeug简介 Werkzeug是一个WSGI工具包,他可以作为一个Web框架的底层库。这里稍微说一下, werkzeug 不是一个web服务器,也…

Java Stream、File、IO 超详细整理,适合新手入门

目录 Java Stream Java File Java IO Java Stream Java Stream 是 Java 8 中引入的一种新的抽象数据类型,它允许开发人员使用函数式编程的方式来处理集合数据。 使用 Java Stream 可以方便地进行过滤、映射、排序和聚合等操作。下面是一个简单的示例:…

10分钟快速入门Pandas库

pandas 是基于NumPy 的一种工具,该工具是为解决数据分析任务而创建的,这篇文章主要介绍了10分钟快速入门Pandas库,重点介绍pandas常见使用方法,结合实例代码介绍的非常详细,需要的朋友可以参考下目录Pandas的介绍pandas 是基于Num…

其实一点不难学会这三步一定让你学会制作一个『3D建模』大屏

上次已经教过大家怎样制作一个简单的2D数据可视化大屏~那有一些朋友们就会说那些炫酷的3D可视化大屏是怎样制作的呢?这不就来了,今天就教大家怎样用山海鲸可视化软件制作一个带3D建模的可视化大屏,并且最重要的是无需会特别复杂的3D建模知识。…

数据结构与算法之爬楼梯动态规划

一.题目(爬楼梯)假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬…

playQueue 和 segmentQueue解析

文章目录 前提分析时序图常见问题结论前提 一个playlist有4段每段大概2秒每段走http下载大概500ms每段大小500KB左右分析时序图 如果网络情况很理想的话,基本上一直保持在playQueue为4,segmentQueue为1。如果网络特别差的情况下,基本上playQueue为1,segmentQueue为4。当网络…

中科检测赴中科院广州电子CASAIM开展座谈会,围绕3D打印、三维扫描和精密测量展开深入交流

2月9日,中科检测技术服务(广州)股份有限公司(简称:中科检测)一行到访中科院广州电子技术有限公司,参观广东省增材制造工程实验室和三维扫描及精密测量重点实验室,就3D打印、三维扫描和精密测量相关技术内容…