文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

深度剖析java类和对象

2023-09-07 12:58

关注

个人主页:兜里有颗棉花糖
欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创
收录于专栏【JavaSE_primary
在这里插入图片描述

在Java中,一切皆对象。

目录

一、类的定义和使用

在Java中,我们通过类来描述对象。

类的定义:Java类是面向对象编程中的基本构建模块,用于描述对象的属性(成员变量)和行为(方法)

1.1类的定义格式

Java类的定义格式如下:

[访问修饰符] class 类名 {    // 成员变量(属性)        // 构造方法        // 方法}

一个类应该有以下几部分组成:类声明、成员变量、成员方法、构造方法、访问修饰符。

1.2定义学生类

class Student{//成员变量public String name;public String gender;public short age;public double score;//方法public void DoClass(){}public void DoHomework(){}public void Exam(){}}

我们定义类时应该注意一下注意事项:

1.一般一个文件当中只定义一个类
2.main方法所在的类一般要使用public修饰
3.public修饰的类必须要和文件名相同
4.不要轻易去修改public修饰的类的名称,如果要修改,通过开发工具修改

二、类的实例化

我们首先要知道,我们定义一个类时其实就是在计算机当中自定义了一个类型,就像int、double一样,只不过类这个类型时我们自己定义的而已,而int、double这样的类型是Java语言自带的内置数据类型。

有了类这个类型(可以理解为我们自己定义的一种自定义类型)之后,我们就可以利用类这个类型来定义实例(也称对象)了,这个过程就称为类的实例化。

举个例子:
下面有一个Teacher类,请看:

class Teacher{//成员变量或字段    public String name;    public int age;    public int ID;//成员函数    public void work(){        System.out.println("今天的工作是教学");    }    public void wages(){        System.out.println("本月的工资为10000");    }}

我们现在实力化一个Teacher类对象,请看:

public class Test2 {    public static void main(String[] args) {        //通过new来实例化一个Teacher对象        Teacher t1 = new Teacher();        t1.name = "李华";        t1.age = 25;        t1.ID = 123456;        System.out.println(t1.name);        System.out.println(t1.age);        System.out.println(t1.ID);        t1.work();        t1.wages();    }}

运行结果如下:
在这里插入图片描述
在这里插入图片描述

关于类的实例化这里有以下几点需要注意:

通过new 关键字来实例化一个对象。
2.使用 . 来访问对象中的属性和方法。
3.同一个类可以实例化多个对象。
4.**当成员变量没有赋值的时候,默认值就是其对应的初始值。**即int->0 float->0.0f boolean->false char->'\u0000'

三、this引用

3.1this引用是什么

概念:this引用指向当前对象(成员方法运行时调用该成员方法的对象),在成员方法中所有成员变量的操作,都是通过该引用去访问。

下面是日期类对象,请看:

class Date {    public int year;    public int month;    public int day;    public void setDay(int year, int month, int day){        this.year = year;        this.month = month;        this.day = day;    }    public void printDate(){        System.out.println(this.year + "-" + this.month + "-" + this.day);    }}public class Test3 {    public static void main(String[] args) {        //先构造3个日期类对象        Date d1 = new Date();        Date d2 = new Date();        Date d3 = new Date();        //对每个对象的成员变量进行赋值        d1.setDay(23,8,30);        d2.setDay(23,8,31);        d3.setDay(23,9,1);        //对每个日期类对象进行打印        d1.printDate();        d2.printDate();        d3.printDate();    }}

运行结果如下:
在这里插入图片描述

注意关键字this用于引用当前对象,即调用当前方法的对象。它可以在对象的成员方法中引用当前对象的成员变量和方法。
请看举例:

class MyClass {    private int value;    public void printValue() {        System.out.println(this.value); // 使用this引用当前对象的成员变量    }}

3.2this引用特性

this引用有如下几个特性:

  1. this的类型:对应类类型引用,即哪个对象调用就是哪个对象的引用类型
  2. this只能在成员方法中使用(静态成员方法无法使用)
  3. 在成员方法中,this只能引用当前对象,不能再引用其他对象
  4. this是成员方法第一个隐藏的参数,编译器会自动传递,在成员方法执行时,编译器会负责将调用成员方法对象的引用传递给该成员方法,this负责来接收

四、对象的构造及初始化

4.1如何初始化对象

我们先来看一个问题,如果一个对象没有对其成员变量赋值的话,那能不能打印其成员变量呢?依然是那日期类对象来进行举例:
在这里插入图片描述

运行结果如下:在这里插入图片描述

可以看到这里并没有报错。因为如果我们没有显式的初始化对象的成员变量,那么编译器就会默认将对象的成员变量进行初始化。

4.2构造方法

我们也可以通过构造方法来对对象进行初始化

构造方法概念:构造方法(也称为构造器)是一个特殊的成员方法,构造方法的名字必须与类名相同,在创建对象时,由编译器自动调用,并且在整个对象的生命周期内只调用一次

请看举例:

//不带参数的构造函数public Date(){    System.out.println("不带参数的构造方法");}//带参数的构造函数public Date(int year,int month,int day){    System.out.println("带参数的构造方法");}

我们要想实例化一个对象,就必须调用构造函数,因为只有调用完构造函数之后,才算真正实例化出了一个对象(调用完构造函数之后对象才算真正意义上的产生)。

另外,构造方法是可以构成重载的,如上(一个带参数、一个不带参数的构造方法)。

4.3构造方法特性

4.4调用本类当中其它构造方法

什么是调用本类当中其它构造方法呢?请看举例:

class Date {    public int year;    public int month;    public int day;//无参构造    Date(){        //调用本类当中其它构造方法        this(23,5,21);//不许放在构造方法里面而且是第一行        System.out.println("不带参数的构造方法");    }    //带参构造    Date(int year,int month,int day){        System.out.println("带参数的构造方法");    }    public void setDay(int year, int month, int day){        this.year = year;        this.month = month;        this.day = day;    }    public void printDate(){        System.out.println(this.year + "-" + this.month + "-" + this.day);    }}

this(…)有两点需要注意

4.5默认初始化

默认初始化是指在创建对象时,如果没有显式地对成员变量进行初始化,Java会使用默认值来初始化它们。默认值根据成员变量的类型而定,例如,整型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默认值是null。默认初始化确保了对象在创建时每个成员变量都有一个初始值。

请看举例:
在这里插入图片描述
运行结果如下:
在这里插入图片描述

4.6就地初始化

就地初始化是指在创建对象时,对成员变量进行显式的初始化。我们可以在对象创建的同时为成员变量赋予特定的值。

请看举例:

public class MyClass {//当然,在这里进行就地初始化也是可以的    private int value;    private String str;    // 就地初始化块    {        value = 10;        str = "Hello";    }    // 构造方法1    public MyClass() {        // 存在就地初始化的成员变量的初始化语句    }    // 构造方法2    public MyClass(int value) {        // 存在就地初始化的成员变量的初始化语句        this.value = value;    }}

解释
MyClass类包含一个就地初始化块,在这个块中对成员变量value和str进行了初始化。在编译期间,编译器会将就地初始化块的内容添加到所有的构造函数中(包括无参构造函数和带参构造函数)。
因此,无论是使用无参构造函数还是带参构造函数创建对象,成员变量value和str都会得到就地初始化块中指定的初始值。

所以,就地初始化后,编译器会将所有给成员初始化的这些语句添加到各个构造函数中。这样可以确保无论使用哪个构造函数创建对象,成员变量都得到了正确的初始化

以上就是本文类和对象的全部内容。

好了,本文到这里就结束了,再见啦友友们!!!
在这里插入图片描述

来源地址:https://blog.csdn.net/m0_74352571/article/details/132580022

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯