【JAVA】类与对象的重点解析

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: 【JAVA】类与对象的重点解析

前言

Java是一种面向对象编程语言,OOP是Java最重要的概念之一。学习OOP时,学生必须理解面向对象编程的一般概念,例如封装、继承和多态性。了解这些概念是不够的,还需要学习如何在Java中实现OOP,例如类、对象、接口、抽象类等等。虽然在之前的章节中我们已经粗略的介绍过有关类与对象的概念,但这些知识并不全面与详细,今天让我们更加深入的来了解有关类与对象的内容。

image.png

类与对象的关系

在此之前我们已经介绍过类与对象的概念,这里就不再过多介绍有疑问的同学可以阅读之前的文章。让我们进入正题:

类是对象的抽象,而对象是类的具体实例

类是面向对象程序设计的基本概念,它是一组相关的属性和方法的定义。对象则是类的实例,具有类中定义的属性和方法。换句话说,类是对象的模板或者说蓝图,对象是类的实例化结果。

在程序中,我们通过定义类来表示一个概念或者实体,比如说动物、汽车等等。而通过实例化对象来具体描述这个概念或者实体的具体属性和行为。比如说,我们定义了一个动物类,然后通过实例化对象来表示不同种类的动物,比如猫、狗等等。

类与对象之间的关系可以用类似于模型和实例的比喻来理解。类是一个抽象的模型,它定义了一些变量、属性和方法等。而对象是实际存在的对象,它是基于类创建出来的,具有类中定义的属性和方法。类是对象的模板,而对象则是类的实例化结果。在程序运行时,我们使用对象来执行相关的操作和操作数据。

image.png

JAVA源文件有关类的重要事项

  • 一个源文件中只能有一个 public 类
  • 一个源文件可以有多个非 public 类
  • 源文件的名称应该和 public 类的类名保持一致。例如:源文件中 public 类的类名是 Employee,那么源文件应该命名为Employee.java。
  • 如果一个类定义在某个包中,那么 package 语句应该在源文件的首行。
  • 如果源文件包含 import 语句,那么应该放在 package 语句和类定义之间。如果没有 package 语句,那么 import 语句应该在源文件中最前面。
  • import 语句和 package 语句对源文件中定义的所有类都有效。在同一源文件中,不能给不同的类不同的包声明。

类有若干种访问级别,并且类也分不同的类型:抽象类和 final 类等。这些将在访问控制章节介绍。

除了上面提到的几种类型,Java 还有一些特殊的类,如:内部类、匿名类。

static关键字

在这里我要重点提一下关于static关键字,我们通常通过以下代码定义main方法

public static void main(String[] args)

但是大家了解这里为什么要使用static关键字呢?

Java中的static关键字可以用于变量、方法、代码块和内部类中。它的主要作用是为了方便地访问和共享变量和方法。

变量:被声明为static的变量属于类,而不属于实例。因此,多个实例共享同一个类变量,并且可以通过类名来访问它。

  • 方法:被声明为static的方法属于类,不属于实例。因此,它们可以直接通过类名来调用,而不需要创建实例。
  • 代码块:也称静态初始化块,它在类加载时执行,仅执行一次。主要用于初始化类变量和执行一些特殊的操作。
  • 内部类:内部类可以被声明为static,这样它就可以直接访问外部类的静态成员,而不需要创建外部类的实例。

总之,static关键字可以提高代码的重用性可读性,但也要注意它可能会导致线程安全问题和类加载的性能问题。

这样我们就能回答刚才的问题:在main方法中,使用static标识符的意义在于,让Java虚拟机能够在执行应用程序的时候找到该方法,因为Java虚拟机只有在找到静态方法时才能执行该应用程序。因此,main方法需要使用static修饰符。此外,在main方法中,使用static标识符的意义在于,让Java虚拟机能够在执行应用程序的时候找到该方法,因为Java虚拟机只有在找到静态方法时才能执行该应用程序。因此,main方法需要使用static修饰符。


目录
相关文章
|
3天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
16 2
|
7天前
|
Java
轻松上手Java字节码编辑:IDEA插件VisualClassBytes全方位解析
本插件VisualClassBytes可修改class字节码,包括class信息、字段信息、内部类,常量池和方法等。
52 6
|
5天前
|
存储 算法 Java
Java Set深度解析:为何它能成为“无重复”的代名词?
Java的集合框架中,Set接口以其“无重复”特性著称。本文解析了Set的实现原理,包括HashSet和TreeSet的不同数据结构和算法,以及如何通过示例代码实现最佳实践。选择合适的Set实现类和正确实现自定义对象的hashCode()和equals()方法是关键。
18 4
|
6天前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
|
8天前
|
Java 编译器 数据库连接
Java中的异常处理机制深度解析####
本文深入探讨了Java编程语言中异常处理机制的核心原理、类型及其最佳实践,旨在帮助开发者更好地理解和应用这一关键特性。通过实例分析,揭示了try-catch-finally结构的重要性,以及如何利用自定义异常提升代码的健壮性和可读性。文章还讨论了异常处理在大型项目中的最佳实践,为提高软件质量提供指导。 ####
|
11天前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
50 4
|
11天前
|
存储 分布式计算 Java
存算分离与计算向数据移动:深度解析与Java实现
【11月更文挑战第10天】随着大数据时代的到来,数据量的激增给传统的数据处理架构带来了巨大的挑战。传统的“存算一体”架构,即计算资源与存储资源紧密耦合,在处理海量数据时逐渐显露出其局限性。为了应对这些挑战,存算分离(Disaggregated Storage and Compute Architecture)和计算向数据移动(Compute Moves to Data)两种架构应运而生,成为大数据处理领域的热门技术。
32 2
|
11天前
|
Java 编译器 开发者
Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面
本文探讨了Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面,帮助开发者提高代码质量和程序的健壮性。
27 2
|
11天前
|
存储 Java 开发者
Java中的集合框架深入解析
【10月更文挑战第32天】本文旨在为读者揭开Java集合框架的神秘面纱,通过深入浅出的方式介绍其内部结构与运作机制。我们将从集合框架的设计哲学出发,探讨其如何影响我们的编程实践,并配以代码示例,展示如何在真实场景中应用这些知识。无论你是Java新手还是资深开发者,这篇文章都将为你提供新的视角和实用技巧。
11 0
|
3月前
|
Java 开发者
奇迹时刻!探索 Java 多线程的奇幻之旅:Thread 类和 Runnable 接口的惊人对决
【8月更文挑战第13天】Java的多线程特性能显著提升程序性能与响应性。本文通过示例代码详细解析了两种核心实现方式:Thread类与Runnable接口。Thread类适用于简单场景,直接定义线程行为;Runnable接口则更适合复杂的项目结构,尤其在需要继承其他类时,能保持代码的清晰与模块化。理解两者差异有助于开发者在实际应用中做出合理选择,构建高效稳定的多线程程序。
58 7

推荐镜像

更多