【java】今天你有 new “对象”吗

简介: 【java】今天你有 new “对象”吗

前言

大家好呀,很抱歉断更了一个多星期,上篇说的要更新C++array也一直没更新,为什么呢?因为上周我确定了自己的方向:java,所以我上周一直在疯狂学习java,也没能及时更新博客,但没关系,我这周又回来了,我来更新我的java学习笔记了。

7a469e0cd1a845ee898a967a86598260.jpg

一、类和对象的概念

和我们之前学的面向过程的C语言不同,java是一种面向对象的高级程序语言?那么什么是对象呢?此对象非彼对象,这里对象就是真实世界中的实体,对象与实体是一一对应的,也就是说现实世界中每一个实体都是一个对象,它是一种具体的概念。对象有以下特点


对象具有属性和行为。

对象具有变化的状态。

对象具有唯一性。

对象都是某个类别的实例。

一切皆为对象,真实世界中的所有事物都可以视为对象。


想要理解对象就绕不开类这个概念,实质上可以将类看作对象的抽象,它定义了对象所具有的属性(成员变量)和方法(函数)

a88bcc0dfd6c4ea6a495f987abfb2d07.gif

当然看了这些抽象的概念,你可能对类和对象还不是太清楚😂,没关系我们接下来从不同的角度阐述什么是类什么是对象😎


1、从生活逻辑的角度

人这个生物可以看作是一个类,人有名字、性别、年龄,这可以看作是类的属性(成员变量),人要吃饭、休息、学习、工作,这可以看作类的行为(方法或函数)但这些属性和行为无疑是抽象的,因为你不可能给一个人类大群体都起一个具体的名字,比如都叫张三,那全世界就有70多亿个张三了,可能吗?


所以我们提到的人的名字、年龄和他们的吃饭工作的行为都是都是一个抽象的概念,是不具体的。

af3cc2f2794c4bb9ac68f0075a0e14c4.gif

而每个人都是一个独立的个体,每个人都有他自己的名字等具体的属性,每个人都有他自己要干的事(行为或称方法),这些针对每个人的属性(成员变量)、行为(方法)无疑都是具体的,比如:李四、性别男、今年19岁、正在去餐厅吃晚饭。


人这个生物群体就是一个类,而具体的每个人:小王、小红、小强就人这个类所对应的一个个实例化的对象,如下图所示:

image.png


2、从编程语言的角度

类可以看作是自定义的数据类型

对象可以看作是类所对应的数据类型的变量


二、类与对象的定义和和简单使用

类的定义

在Java中定义类,使用关键字class完成。语法如下:


class 类名称 {

        属性 (变量) ;

        行为 (方法) ;

}


比如定义一个学生类


class Student {
    String name;   //学生类的属性
    int age;
    public void eat() {
        System.out.println(name + "在吃饭");   // 学生类的行为(方法)
    }
}


那么类定义好了,我们该怎样使用类呢,能直接用吗?当然不行了,我们前面也说了类只是一个抽象的概念,要想使用类中的属性和方法,还要有该类所对应的实例化对象才行😅。

2bdd2adfeace415bb0bb75e9872d8e6c.gif

对象的实例化

那么由于类属于引用数据类型,所以对象的产生格式(两种格式)如下:


1)格式一:声明并实例化对象


类名称 对象名称 = new 类名称 () ;


(2)格式二:先声明对象,然后实例化对象:


1 类名称 对象名称 = null ;

2 对象名称 = new 类名称 () ;


引用数据类型与基本数据类型最大的不同在于:引用数据类型需要内存的分配和使用。所以,关键字new的主要功能就是分配内存空间,也就是说,只要使用引用数据类型,就要使用关键字new来分配内存空间。


当一个实例化对象产生之后,可以按照如下的方式进行类的操作:


对象.属性:表示调用类之中的属性;

对象.方法():表示调用类之中的方法;



比如调用我们刚才创建的学生类:


class Student {
    String name;   //学生类的属性
    int age;
    public void eat() {
        System.out.println(name + "在吃饭");   // 学生类的行为(方法)
    }
}
public class TestDemo3 {
    public static void main(String[] args) {
        // 对象创建好后,该对象有类中全部的属性和(行为)方法
        Student student1 = new Student();    // 通过new关键字创建了一个对象student1
        student1.name = "张三"; // 给学生对象student1的姓名属性赋值
        student1.eat();        // 调用学生对象的方法(行为)
        Student student2 = null;  // 第二种定义方法
        student2 = new Student();
        student2.name = "小鱼儿"; // 给学生对象student2的姓名属性赋值
        student2.eat();
    }
}

代码输出

39089ca935f14fbbb4c5f5d37dc9a57e.png



可以看出这两种定义方式都是可以的,  我们在main方法中成功new(创建)了两个学生对象, 并通过"对象名.属性" 成功给他们赋了值,  通过"对象名.方法"成功的输出了类的行为:eat.


看到这, 你是不是觉得类和对象好像没什么难的?还挺简单的呀! 不不不, 现在我们只是刚刚知道了类和对象的基本概念和基本用法


还有很多用法我们还没提到, 不过不要着急, 让我们接下来一点点揭开类和对象他神秘的面纱,


我们下篇见c78f6188c87b489084f4a7de48209ba1.gif

相关文章
|
5天前
|
安全 Java 编译器
java中类与对象回顾总结-2
java中类与对象回顾总结
14 3
|
5天前
|
Java 编译器
java中类与对象回顾总结-1
java中类与对象回顾总结
14 3
|
1天前
|
Java 编译器
【Java开发指南 | 第一篇】类、对象基础概念及Java特征
【Java开发指南 | 第一篇】类、对象基础概念及Java特征
9 4
|
2天前
|
安全 Java 数据安全/隐私保护
Java一分钟之-Java反射机制:动态操作类与对象
【5月更文挑战第12天】本文介绍了Java反射机制的基本用法,包括获取Class对象、创建对象、访问字段和调用方法。同时,讨论了常见的问题和易错点,如忽略访问权限检查、未捕获异常以及性能损耗,并提供了相应的避免策略。理解反射的工作原理和合理使用有助于提升代码灵活性,但需注意其带来的安全风险和性能影响。
17 4
|
4天前
|
Java
【JAVA基础篇教学】第五篇:Java面向对象编程:类、对象、继承、多态
【JAVA基础篇教学】第五篇:Java面向对象编程:类、对象、继承、多态
|
5天前
|
缓存 Java 程序员
关于创建、销毁对象⭐Java程序员需要掌握的8个编程好习惯
关于创建、销毁对象⭐Java程序员需要掌握的8个编程好习惯
关于创建、销毁对象⭐Java程序员需要掌握的8个编程好习惯
|
5天前
|
Java
从源码出发:JAVA中对象的比较
从源码出发:JAVA中对象的比较
19 3
|
6天前
|
Java
Java一分钟之-类与对象:面向对象编程入门
【5月更文挑战第8天】本文为Java面向对象编程的入门指南,介绍了类与对象的基础概念、常见问题及规避策略。文章通过代码示例展示了如何定义类,包括访问修饰符的适当使用、构造器的设计以及方法的封装。同时,讨论了对象创建与使用时可能遇到的内存泄漏、空指针异常和数据不一致等问题,并提供了相应的解决建议。学习OOP需注重理论与实践相结合,不断编写和优化代码。
27 1
|
12天前
|
SQL Java 数据库连接
15:MyBatis对象关系与映射结构-Java Spring
15:MyBatis对象关系与映射结构-Java Spring
31 4
|
15天前
|
Java 编译器
【Java探索之旅】解密构造方法 对象初始化的关键一步
【Java探索之旅】解密构造方法 对象初始化的关键一步
17 1