返回顶部
首页 > 资讯 > 后端开发 > Python >JavaSE的类和对象你真的了解吗
  • 335
分享到

JavaSE的类和对象你真的了解吗

2024-04-02 19:04:59 335人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录1.基本概念1.1面向对象1.2类和对象2.类的定义及使用2.1定义2.2类的实例化3.this引用3.1访问成员变量3.2访问成员方法3.3this引用的特性4.构造方法4.1

1.基本概念

首先我们需要弄清楚几个概念:面向对象是什么、类是什么、对象又是什么?还是逐个来说

1.1面向对象

我们常说Java是面向对象的语言,C语言是面向过程的语言,那面向对象是什么,它和面向过程的区别在哪?

面向对象是解决问题的一种思想,其核心是依靠对象之间的交互来解决事情

至于面向对象和面向过程的区别,假设现在有一道数学题:

面向过程:你自己进行手算,你需要关注套用什么公式,如何化简、哪些条件组合可以推出什么结论等,中间有一个环节出错都不行

面向对象:你把问题给计算机,让计算机解决,我们关注的只是人和计算机这两个对象如何交互

这么看面向对象好像比面向过程更高级,但其实二者没有好与坏之分,它们都有自己专门的应用场景,就比如数学考试的时候题目你就只能自己写( ̄▽ ̄)

1.2类和对象

  • 类:对一个实体的描述
  • 对象:类的实例化

假设你要设计某个东西,类就是你所画的图纸,对象则是你通过图纸造出来的实物;一个类可以产生多个对象

2.类的定义及使用

2.1定义

在定义类的时候需要使用一个关键字:class

具体语法如下:

class ClassName {
    field;
    method;
}
  • ClassName:类名
  • field:成员变量
  • method:成员方法

我们现在定义一个类Book,里面成员变量包括书名、作者和价格,成员方法就是打印所有成员变量

文章后面的概念都会围绕这个类来进行讲解 

2.2类的实例化

在main方法中实例化一个对象用到的关键字:new

代码如下:

Book book1 = new Book();

之后便可以使用“.”来访问类中的成员变量和成员方法,如下:

之前我们说过Java中的变量都要初始化,类里面的成员变量也不例外,如果成员变量未初始化,那么默认是对应的数据类型的0值

整型变量是0,浮点数是0.0,布尔类型为false,引用类型为null,char为'\u0000' 

3.this引用

3.1访问成员变量

我们现在往类里面再增加一个方法setBook,用这个方法来对成员变量进行初始化

public void setBook(String name,String author,int price) {
        name=name;
        author=author;
        price=price;
    }

我们再来看一下结果:

 为什么全部都是0值?

其原因在于方法的参数名和成员变量名相等,形参因为数局部变量,所以程序认为方法里面的name等变量全部都是形参

我们只需要将等号左边的变量加上this就可以解决这个问题

this代表的是当前对象的引用(谁调用了this,谁就是当前对象)

上图中book1调用的setBook方法,所以 book1是当前对象,方法中的this.name等变量就相当于告诉程序这个不是方法的形参,而是对象book1的成员变量

3.2访问成员方法

这个比较好理解,就是在方法里面引用类中的其它方法,但注意一点:引用不能成环

假设setBook里面引用了show方法,那么show方法里面就不能再引用setBook,否则就乱套了

还有一点需要补充:

上面提到过一个类可以产生多个对象,那么多个对象调用同一个方法,程序如何分辨是哪个对象调用的?

依旧是this引用

类中的方法起始都有一个隐式的this参数,通过this知道是哪个对象调用的方法,也就是说setBook方法其实是有4个参数,如下:

public void setBook(Book this,String name,String author,int price) {
        this.name=name;
        this.author=author;
        this.price=price;
    }

除了访问成员方法外,this还可以调用本类其它构造方法,这一点在构造方法中再介绍

3.3this引用的特性

1.只能在成员方法中使用

2.是成员方法的第一个隐藏的参数

3.在成员方法中只能引用当前对象(在对象Book1中使用this就只能引用Book1,不能引用对象Book2)

4.为对应类的类型引用,即哪个对象调用就是哪个对象的引用类型

4.构造方法

构造方法也是成员方法,但它比较特殊,对象的初始化除了在main方法中使用“.”一个一个初始化外还可以使用构造方法

在实例化一个对象的时候一定会经过两个步骤:

  • 分配内存
  • 调用合适的构造方法

如果用户没有写构造方法,编译器会默认提供一个不带参数的构造方法,写了就调用用户自己写的构造方法

4.1构造方法的特点

  • 方法名要和类名相同
  • 没有返回值,即使是写void也不行
  • 在整个对象的声明周期内只能调用一次
  • 可以重载

我们写一个构造方法如下:

 public Book(String name, String author, int price) {
        this.name = name;
        this.author = author;
        this.price = price;
    }

那么初始化对象如下:

4.2this在构造方法中使用

上面提到构造方法可以重载,那么我们再写一个没有参数的构造方法

 public Book() {
   
    }

this在构造方法中可以调用其它的构造方法,比如我在没有参数的构造方法中调用上面的有三个参数的构造方法

注意:

  • this同样不能成环
  • this必须放在构造方法的第一行

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!

--结束END--

本文标题: JavaSE的类和对象你真的了解吗

本文链接: https://lsjlt.com/news/144286.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • JavaSE的类和对象你真的了解吗
    目录1.基本概念1.1面向对象1.2类和对象2.类的定义及使用2.1定义2.2类的实例化3.this引用3.1访问成员变量3.2访问成员方法3.3this引用的特性4.构造方法4.1...
    99+
    2024-04-02
  • C++的对象特性和友元你真的了解吗
    目录对象特征构造函数和析构函数函数的分类以及调用拷贝构造函数调用时机 构造函数调用规则深拷贝与浅拷贝初始化列表类对象作为类变量静态成员成员变量和成员函数分开储存this指针...
    99+
    2024-04-02
  • Go语言中的对象,你真的了解吗?
    Go语言是一种快速、可靠、高效的编程语言,它在近年来越来越受到开发者的关注和青睐。在Go语言中,对象是一种重要的概念,但是很多人对于Go语言中的对象并不是很清楚。本文将深入探讨Go语言中的对象,帮助读者更好地理解和使用该语言。 一、Go语言...
    99+
    2023-10-14
    对象 http git
  • ASP Windows对象接口: 你真的了解它吗?
    ASP是一种在Web应用程序中用于创建动态页面的技术,它允许开发人员使用不同的编程语言来编写脚本,其中包括VBScript、JavaScript和JScript等。在使用ASP开发Web应用程序时,Windows对象接口扮演着非常重要的角...
    99+
    2023-08-29
    windows 对象 接口
  • 你真的理解Django对象数据类型吗?
    Django是一个非常流行的Web框架,它采用了MVC(Model-View-Controller)架构,使用Python编写。它的灵活性和可扩展性使得它成为了许多Web应用程序的首选框架。在Django中,对象数据类型是非常重要的一部分,...
    99+
    2023-08-21
    django 对象 数据类型
  • 带你了解Java的类和对象
    目录五丶封装(1)包的概念与创建1>概念2>创建(2)包的使用–导入包(3)封装定义–权限控制访问(4)补充些常用的包(小拓展)六丶关于static成员(1)修饰成员变量...
    99+
    2024-04-02
  • JavaSE的类和对象是什么
    这篇文章主要介绍了JavaSE的类和对象是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.基本概念首先我们需要弄清楚几个概念:面向对象是什么、类是什么、对象又是什么?还...
    99+
    2023-06-29
  • PHP面试:你真的理解对象和Unix吗?
    在PHP开发领域,面试官往往会问到关于对象和Unix的问题,这些问题看似简单,但是却需要你对PHP的底层有深入的理解。本文将帮助你更好地理解这些问题。 对象 PHP是一种面向对象的语言,面向对象的编程思想是将数据和操作数据的方法封装在一个...
    99+
    2023-07-06
    面试 对象 unix
  • sql_slave_skip_counter,你真的用对了吗?
    写在前面:    最近一段时间都在做传统主从复制相关的测试,思考了很多上线主从复制架构后,可能会发生的问题,然后针对性设置了这些故障,再然后思考如何在保证业务可用,或者对业务冲击尽可能的小的前提下,进行故障...
    99+
    2024-04-02
  • JavaSE的逻辑控制你了解吗
    目录1. Java中程序的逻辑控制语句1.1顺序结构1.2分支结构1.2.1 switch语句1.3循环结构2.输入输出2.1输出到控制台2.2 从键盘输入2.2.1第一种方法(不常...
    99+
    2024-04-02
  • C++的数据类型你真的了解吗
    目录前言1 整型2 sizeof关键字3 实型(浮点型)4 字符型5 转义字符6 字符串型7 布尔类型 bool8 数据的输入总结前言 C++不像python,创建变量的时候必须指定...
    99+
    2024-04-02
  • python3中的类继承你真的了解吗
    目录(1)首先使用直接继承的方式(2)在子类中定义属性(3)如果想要继承父类中的属性,一般使用super方法:(4)如果需要在子类的__init__中传入参数则可以这样使用:&nbs...
    99+
    2024-04-02
  • Java中的抽象类和接口你了解吗
    目录抽象类什么是抽象类?抽象类属于什么类型?抽象类怎么定义?抽象类是干什么的?什么是抽象方法?非抽象类继承抽象类抽象类总结接口接口的基础语法接口的实现接口和多态联合使用继承和实现同时...
    99+
    2024-04-02
  • 你了解PHP中的对象和Apache的关系吗?
    当谈到Web开发时,PHP和Apache是两个最常被提及的工具。PHP是一种动态的编程语言,用于开发Web应用程序,而Apache则是一种Web服务器,用于将Web应用程序提供给用户。但是,很少有人意识到PHP和Apache之间的密切关系,...
    99+
    2023-07-08
    apache 对象 numpy
  • JavaScript的面向对象你了解吗
    目录1. 面向对象编程介绍1.1 两大编程思想1.2 面向过程编程 POP(Process - oriented - programming)1.3 面向对象编程 OOP(Objec...
    99+
    2024-04-02
  • JavaScript的对象和包装类你了解多少
    目录一、对象1.1 描述对象1.2 属性的增删改查(以下需要在控制台输入)1.3 对象的创建方法1.3.1 字面量1.3.2 构造函数1.3.3 Object.create(原型)方...
    99+
    2024-04-02
  • 你真的掌握了Java教程中的对象容器吗?
    Java作为一种广泛使用的编程语言,在软件开发领域有着举足轻重的地位。其中,对象容器是Java中非常重要的一个概念,也是Java中非常常见的一种数据结构。然而,本文将深入介绍Java中的对象容器,帮助读者更好地理解和使用它们。 一、什么是对...
    99+
    2023-08-01
    教程 对象 容器
  • 解析JavaSe的抽象类和接口
    目录1. 抽象类和抽象方法2. 相关面试题1、抽象类必须要有抽象方法吗?2、普通类和抽象类有哪些区别?3、抽象类能使用 final 修饰吗?3. 接口3.1 接口中的常量3.2 接口...
    99+
    2024-04-02
  • Java和JavaScript的异同,你真的了解吗?
    Java和JavaScript是两种非常常见的编程语言,它们在很多方面有着相似的特性,但它们也有着很多不同之处。在本文中,我们将探讨Java和JavaScript的异同,并且演示一些代码示例来帮助你更好地理解它们。 Java和JavaS...
    99+
    2023-10-24
    javascript http 重定向
  • Javascript的异步函数和Promise对象你了解吗
    目录1、JS中的异步1.1 同步1.2 异步1.3 回调函数解决异步问题1.4 回调地狱2、Promise对象2.1 Promise的基本使用2.2 async 和 await总结1...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作