教妹学Java(二十三):怎么理解 Java 中对象和类的概念?(1)

简介: 教妹学Java(二十三):怎么理解 Java 中对象和类的概念?

你好呀,我是沉默王二,CSDN 排名前十的博客专家。这是《教妹学 Java》专栏的第二十三篇,我们来理解一下 Java 中的对象和类,以及它们俩的概念——什么是对象?什么又是类?


本专栏中的代码已收录到 GitHub github.com/itwanger ,里面还有我精心为你准备的一线大厂面试题。

————————————————


三妹上的洛阳理工,校区离我家很近, 所以每逢周末她都会来我家,让我辅导她学习 Java。作为一名拥有十余年编程经验的程序员,以及父母给我们的这份血缘关系,我觉得义不容辞。


“二哥,这次我们要学习的内容是‘对象和类’,对吧?”看来三妹已经提前预习了我上次留给她的作业。


“是的,三妹。Java 是一门面向对象的编程语言,所以我们需要使用对象和类来设计程序。 ”我面带着朴实无华的微笑回答着她,“Java 中的对象既是物理实体也是逻辑实体,而 Java 中的类仅仅是逻辑实体。”


01、Java 中的对象是什么


具有状态和行为的实体被称为对象,例如铅笔、苹果、书本、书包、黑板,这些是物理存在的,有形的。


image.png


也可以是逻辑上存在的,我们按照想象力把它设计出来的。比如说支付宝、微信。




对象具有三种特征:


状态:描述了对象给人的直观印象(名词),比如说人的名字、年纪、性别。


行为:表示对象具有的功能(动词),比如说人可以吃饭、睡觉、打豆豆。


定义:Java 虚拟机在内部会使用一个唯一标识(对外部是不可见的)来标记每一个对象。


02、Java 中的类是什么


类可以看做是创建对象的一个模板,我们来通过一个简单的例子理解一下类的定义。


/**
 * @author 沉默王二,一枚有趣的程序员
 */
public class Person {
    private String name;
    private int age;
    private int sex;
    private void eat() {
    }
    private void sleep() {
    }
    private void dadoudou() {
    }
}



一个类可以包含:


字段

方法

构造方法

在 Person 类中,字段有 name、age 和 sex,它们也称为实例变量或者成员变量——在类内部但在方法外部,实例变量在编译时不占用内存空间,在运行时(对象实例化 new Person())获取内存——这也正是它被称作“实例”变量的原因。


方法有 eat()、sleep() 和 dadoudou(),表示 Person 这个对象可以做什么。


咦,没有构造方法呢?的确在 Person 类的源码文件(.java)中看不到,但在反编译后的字节码文件(.class)中是可以看得到的。


//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
package com.itwanger.twentythree;
public class Person {
    private String name;
    private int age;
    private int sex;
    public Person() {
    }
    private void eat() {
    }
    private void sleep() {
    }
    private void dadoudou() {
    }
}



public Person(){} 就是默认的构造方法,因为是空的构造方法(方法体中没有内容),所以可以缺省。



相关文章
|
17天前
|
存储 Java
Java中判断一个对象是否是空内容
在 Java 中,不同类型的对象其“空内容”的定义和判断方式各异。对于基本数据类型的包装类,空指对象引用为 null;字符串的空包括 null、长度为 0 或仅含空白字符,可通过 length() 和 trim() 判断;集合类通过 isEmpty() 方法检查是否无元素;数组的空则指引用为 null 或长度为 0。
|
17天前
|
安全 Java 编译器
JAVA泛型类的使用(二)
接上一篇继续介绍Java泛型的高级特性。3. **编译时类型检查**:尽管运行时发生类型擦除,编译器会在编译阶段进行严格类型检查,并允许通过`extends`关键字对类型参数进行约束,确保类型安全。4. **桥方法**:为保证多态性,编译器会生成桥方法以处理类型擦除带来的问题。5. **运行时获取泛型信息**:虽然泛型信息在运行时被擦除,但可通过反射机制部分恢复这些信息,例如使用`ParameterizedType`来获取泛型参数的实际类型。
|
17天前
|
安全 Java 编译器
JAVA泛型类的使用(一)
Java 泛型类是 JDK 5.0 引入的重要特性,提供编译时类型安全检测,增强代码可读性和可维护性。通过定义泛型类如 `Box<T>`,允许使用类型参数。其核心原理是类型擦除,即编译时将泛型类型替换为边界类型(通常是 Object),确保与旧版本兼容并优化性能。例如,`Box<T>` 编译后变为 `Box<Object>`,从而实现无缝交互和减少内存开销。
|
1月前
|
Java
Java快速入门之类、对象、方法
本文简要介绍了Java快速入门中的类、对象和方法。首先,解释了类和对象的概念,类是对象的抽象,对象是类的具体实例。接着,阐述了类的定义和组成,包括属性和行为,并展示了如何创建和使用对象。然后,讨论了成员变量与局部变量的区别,强调了封装的重要性,通过`private`关键字隐藏数据并提供`get/set`方法访问。最后,介绍了构造方法的定义和重载,以及标准类的制作规范,帮助初学者理解如何构建完整的Java类。
|
1月前
|
安全 Java
Object取值转java对象
通过本文的介绍,我们了解了几种将 `Object`类型转换为Java对象的方法,包括强制类型转换、使用 `instanceof`检查类型和泛型方法等。此外,还探讨了在集合、反射和序列化等常见场景中的应用。掌握这些方法和技巧,有助于编写更健壮和类型安全的Java代码。
50 17
|
1月前
|
缓存 Java 开发者
Java字面量详解:概念、分类与使用实例
本文介绍了Java字面量的概念、分类及应用。
54 11
|
2月前
|
存储 Java 程序员
Java的基础概念一
### Java编程基础简介 #### 一、注释 注释用于解释代码,不会参与编译和运行。Java支持三种注释: - **单行注释**:以 `//` 开头。 - **多行注释**:以 `/* ... */` 包围。 - **文档注释**:通常用于生成开发文档。 #### 二、关键字 关键字是被Java赋予特定含义的英文单词,全部小写,且在代码编辑器中有特殊颜色标记。常用的如 `class` 表示定义一个类。
Java的基础概念一
|
1月前
|
Java
java代码优化:判断内聚到实体对象中和构造上下文对象传递参数
通过两个常见的java后端实例场景探讨代码优化,代码不是优化出来的,而是设计出来的,我们永远不可能有专门的时间去做代码优化,优化和设计在平时
36 15
|
3月前
|
Java 开发者
在 Java 中,一个类可以实现多个接口吗?
这是 Java 面向对象编程的一个重要特性,它提供了极大的灵活性和扩展性。
217 58
|
1月前
|
Java 数据安全/隐私保护
Java的基础概念(二)
本文介绍了Java编程语言中的运算符和表达式,涵盖算术运算符、赋值运算符、关系运算符、逻辑运算符、三元运算符等。重点讲解了算术运算符的使用,如加减乘除取余,并强调了整数除法和取余的特殊性。同时,详细说明了隐式转换与强制转换的概念及应用场景,以及字符串和字符的拼接规则。通过多个案例演示了不同运算符的实际应用,包括数值拆分、自增自减、三元表达式的使用等。最后简要提及了运算符的优先级,指出小括号具有最高优先级。

热门文章

最新文章