【Java SE】类和对象

简介: 【Java SE】类和对象

🐳理解面向对象:

Java是一门纯面向对象的语言(Object Oriented Program,继承OOP),在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。用面向对象的思想来涉及程序,更符合人们对事物的认知,对于大型程序的设计、扩展以及维护都非常友好。

我们拿洗衣服来做个例子

在传统的洗衣服中我们需要做一系列的步骤,我们看一下百度:

其中对应的方法步骤就是我们所说的过程,洗不同的衣服可能过程还不一样,这也就造成了写代码的时候扩展或者维护起来会比较麻烦。

而文章中的工具/原料就是我们所说的对象。

当然,拿现代洗衣服来说的话,以面向对象方式来进行处理,就不关注洗衣服的过程,我们不关注洗衣服到底是怎么完成的,怎么洗的,我们只需要关注把衣服放进洗衣机,放上洗衣液,打开开关即可。这些都是通过对象之间的交互完成的

注意:面向过程和面相对象并不是一门语言,而是解决问题的方法,没有那个好坏之分,都有其专门的应用场景

🐳什么是类?

面相对象程序设计关注的是对象,而对象是现实生活中的实体,比如:洗衣机。但是洗衣机计算机并不认识,需要

开发人员告诉给计算机什么是洗衣机。

上图左侧就是对洗衣机简单的描述,该过程称为对洗衣机对象(实体)进行抽象(对一个复杂事物的重新认知),但是这些简化的抽象结果计算机也不能识别,开发人员可以采用某种面相对象的编程语言来进行描述,比如:Java语言,c++语言等等。

🐳类的定义:

类是用来对一个实体(对象)来进行描述的

这里以一个狗的类进行理解:

1. class Dog{
2. 
3. // 字段(属性) 或者 成员变量
4. public String color;//狗的颜色
5. 
6. public String name;//狗的名字
7. 
8. 
9. // 行为 或者 成员方法
10. public void bark(){
11.         System.out.println(name+"汪汪叫");//狗狗的汪汪叫行为
12.     }
13. public void wag(){
14.         System.out.println(name+"摇尾巴");//狗狗的摇尾巴行为
15.     }
16. }

在定义类的时候语法上是这样的。

注意:一个文件一个public类,且类名要和文件名一致!!

🐳类的实例化:

定义了一个类,就相当于在计算机中定义了一种新的类型

用类类型创建对象的过程,称为类的实例化,在java中采用new关键字,配合类名来实例化对象。

如:

1. public class Test {
2. 
3. public static void main(String[] args) {
4. 
5.         Dog dog1=new Dog();
6.         dog1.color="白色";
7.         dog1.name="小靖";
8.         dog1.bark();
9.         dog1.wag();
10.         Dog dog2=new Dog();
11.         dog2.color="黄色";
12.         dog2.name="小黄";
13.         dog2.bark();
14.         dog2.wag();
15. 
16.     }
17. }
18. class Dog{
19. 
20. // 字段(属性) 或者 成员变量
21. public String color;//狗的颜色
22. 
23. public String name;//狗的名字
24. 
25. 
26. // 行为 或者 成员方法
27. public void bark(){
28.         System.out.println(name+"汪汪叫");//狗狗的汪汪叫行为
29.     }
30. public void wag(){
31.         System.out.println(name+"摇尾巴");//狗狗的摇尾巴行为
32.     }
33. }

结论:new 关键字用于创建一个对象的实例。

         使用 . 来访问对象中的属性和方法。

         同一个类可以创建多个实例。

🐳类和对象的理解:

1. 类只是一个模型一样的东西,用来对一个实体进行描述,限定了类有哪些成员。

2. 类是一种自定义的类型,可以用来定义变量。

3. 一个类可以实例化出多个对象,实例化出的对象 占用实际的物理空间,存储类成员变量。

4. 做个比方。类实例化出对象就像现实中使用建筑设计图建造出房子,类就像是设计图,只设计出需要什么东西,但是并没有实体的建筑存在,同样类也只是一个设计,实例化出的对象才能实际存储数据,占用物理空间。


相关文章
|
17天前
|
安全 Java 编译器
Java对象一定分配在堆上吗?
本文探讨了Java对象的内存分配问题,重点介绍了JVM的逃逸分析技术及其优化策略。逃逸分析能判断对象是否会在作用域外被访问,从而决定对象是否需要分配到堆上。文章详细讲解了栈上分配、标量替换和同步消除三种优化策略,并通过示例代码说明了这些技术的应用场景。
Java对象一定分配在堆上吗?
|
14天前
|
存储 安全 Java
java.util的Collections类
Collections 类位于 java.util 包下,提供了许多有用的对象和方法,来简化java中集合的创建、处理和多线程管理。掌握此类将非常有助于提升开发效率和维护代码的简洁性,同时对于程序的稳定性和安全性有大有帮助。
37 17
|
6天前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
|
10天前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
50 4
|
11天前
|
Java 编译器 开发者
Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面
本文探讨了Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面,帮助开发者提高代码质量和程序的健壮性。
26 2
|
15天前
|
存储 安全 Java
如何保证 Java 类文件的安全性?
Java类文件的安全性可以通过多种方式保障,如使用数字签名验证类文件的完整性和来源,利用安全管理器和安全策略限制类文件的权限,以及通过加密技术保护类文件在传输过程中的安全。
|
19天前
|
存储 Java 编译器
java wrapper是什么类
【10月更文挑战第16天】
22 3
|
8天前
|
安全 Java 测试技术
Java并行流陷阱:为什么指定线程池可能是个坏主意
本文探讨了Java并行流的使用陷阱,尤其是指定线程池的问题。文章分析了并行流的设计思想,指出了指定线程池的弊端,并提供了使用CompletableFuture等替代方案。同时,介绍了Parallel Collector库在处理阻塞任务时的优势和特点。
|
17天前
|
安全 Java
java 中 i++ 到底是否线程安全?
本文通过实例探讨了 `i++` 在多线程环境下的线程安全性问题。首先,使用 100 个线程分别执行 10000 次 `i++` 操作,发现最终结果小于预期的 1000000,证明 `i++` 是线程不安全的。接着,介绍了两种解决方法:使用 `synchronized` 关键字加锁和使用 `AtomicInteger` 类。其中,`AtomicInteger` 通过 `CAS` 操作实现了高效的线程安全。最后,通过分析字节码和源码,解释了 `i++` 为何线程不安全以及 `AtomicInteger` 如何保证线程安全。
java 中 i++ 到底是否线程安全?
|
4天前
|
安全 Java 开发者
深入解读JAVA多线程:wait()、notify()、notifyAll()的奥秘
在Java多线程编程中,`wait()`、`notify()`和`notifyAll()`方法是实现线程间通信和同步的关键机制。这些方法定义在`java.lang.Object`类中,每个Java对象都可以作为线程间通信的媒介。本文将详细解析这三个方法的使用方法和最佳实践,帮助开发者更高效地进行多线程编程。 示例代码展示了如何在同步方法中使用这些方法,确保线程安全和高效的通信。
23 9