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

 更新时间:2022年03月29日 13:27:53   作者:星鸦wyk  
这篇文章主要为大家详细介绍了JavaSE的类和对象,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助

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必须放在构造方法的第一行

总结

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

相关文章

  • RabbitMQ 最常用的三大模式实例解析

    RabbitMQ 最常用的三大模式实例解析

    这篇文章主要介绍了RabbitMQ 最常用的三大模式实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Java实现的决策树算法完整实例

    Java实现的决策树算法完整实例

    这篇文章主要介绍了Java实现的决策树算法,简单描述了决策树的概念、原理,并结合完整实例形式分析了java实现决策树算法的相关操作技巧,代码中备有较为详尽的注释便于理解,需要的朋友可以参考下
    2017-11-11
  • springboot CompletableFuture异步线程池详解

    springboot CompletableFuture异步线程池详解

    这篇文章主要介绍了springboot CompletableFuture异步线程池的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • 浅谈一下Java中的悲观锁和乐观锁

    浅谈一下Java中的悲观锁和乐观锁

    这篇文章主要介绍了一下Java中的悲观锁和乐观锁,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • Java中的Object类详细解读

    Java中的Object类详细解读

    这篇文章主要介绍了Java中的Object类详细解读,java.lang.Object是类层次结构的根类,即所有其它类的父类,每个类都使用 Object 作为超类,需要的朋友可以参考下
    2023-11-11
  • Java实现PDF转图片的三种方法

    Java实现PDF转图片的三种方法

    有些时候我们需要在项目中展示PDF,所以我们可以将PDF转为图片,然后已图片的方式展示,效果很好,Java使用各种技术将pdf转换成图片格式,并且内容不失帧,本文给大家介绍了三种方法实现PDF转图片的案例,需要的朋友可以参考下
    2023-10-10
  • 教你用Java实现RSA非对称加密算法

    教你用Java实现RSA非对称加密算法

    今天带各位小伙伴学习怎么用Java实现RSA非对称加密算法,文中有非常详细的解释及代码示例,对正在学java算法的小伙伴们很有帮助,需要的朋友可以参考下
    2021-05-05
  • Spring Validation中的用户注册、JWT令牌之用户登入功能

    Spring Validation中的用户注册、JWT令牌之用户登入功能

    本文介绍了使用SpringValidation进行用户注册验证和JWT进行用户登录的方法,在用户注册时,通过@Validated注解和@Pattern注解对用户名和密码进行格式校验,并使用Result对象返回验证结果,感兴趣的朋友一起看看吧
    2024-11-11
  • IDEA通过git回滚到某个提交节点或某个版本的操作方法

    IDEA通过git回滚到某个提交节点或某个版本的操作方法

    这篇文章主要介绍了IDEA通过git回滚到某个提交节点或某个版本的方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • 关于java命令的本质逻辑揭秘过程

    关于java命令的本质逻辑揭秘过程

    Java是通过java虚拟机来装载和执行编译文件(class文件)的,java虚拟机通过命令java  option 来启动,这篇文章主要给大家介绍了关于java命令的本质逻辑揭秘的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2021-05-05

最新评论