Java基础之类和对象

简介: Java中,万物皆对象,如人、狗。对象含属性(如人有年龄、名字)和行为(如跑、说话)。面向对象编程(OOP)通过类来抽象对象的共性,类定义属性和行为(方法)。`class`定义类,`new`创建对象。OOP强调封装、继承和多态,提高代码可重用性和可维护性。对比面向过程编程,OOP耦合度低,更适合复杂场景。例如,咖啡机制作过程,OOP会将咖啡机、咖啡豆等抽象为独立对象,方便扩展和维护。

Java基础之类和对象
前面我们曾经提到过,万物皆是对象,Object!人是一个对象,狗是一个对象,桌子、车、表格、一首诗等等都可以看成是一个对象。
对象有属性,比如人有年龄,名字,房子等等。也有行为,比如会跑、会说话、会吃等等这就是对象特有的行为,行为在Java中对应的是方法。
Java就是面向对象编程,也就是说,Java的代码结构就是创建一个对象,我们可以设置和获取这个对象的属性,也可以调用对象的行为方法,让对象去做某个行为。
而把多个对象的共同行为,抽象到一起,那就是类。比如人和狗都属于动物,那么动物就可以作为一个类。车也可以是一个由各种品牌组成的类。
所以类定义了对象,类是创建对象的模板。类定义了一组属性(变量)和行为方法(函数),这些属性和方法描述了一个对象的结构和行为。我们可以根据类来创建对象。
在Java中,你可以使用class关键字来定义一个类。对象则是通过使用new关键字和类的构造函数来创建的。
/**

 * 这就定义了一个car类
 */
public class Car{
  /**
   * 车有属性: 品牌名
   */
  private String brand;
  /**
   * 车有属性: 颜色
   */
  private String color;
  // 构造函数  没个类都应该最少有一个构造函数,用来构造对象,如果没写,Java默认会有一个无参构造
  public Car(String color, String brand) {
      this.color = color;
      this.brand = brand;
  }
  /**
   * 车有行为: 可以跑
   */
  public void run(){
    System.out.printlt("这是一辆" + color + "色的" + brand + "汽车在跑");
  }
}
以上代码就定义了一个车的类,接下来我们实例化一辆红色的宝马车
// 创建对象
public class Main {
    public static void main(String[] args) {
        // 这一句实例化了一个对象
        Car myCar = new Car("红色", "宝马");
        // 这一句是对象调用了它的方法,宝马车跑。
        myCar.run();
    }
}
这就是Java中的类和对象,不管什么东西都可以看作是一个对象,使用类来定义这个对象的属性和方法,使用的时候用类的构造函数实例化一个对象,就能让对象来进行各种操作。
面向对象编程有助于提高代码的可重用性和可维护性。
面向对象编程与面向过程编程
面向对象编程强调将数据和操作数据的函数封装在一起形成对象。它通过封装、继承、多态等机制来组织代码,使得程序更加模块化、可维护和可扩展。
而面向过程编程侧重于将程序分解为一系列的函数或过程,通常使用流程控制语句来控制每个函数或过程完成一个特定的任务。
面向对象耦合性低,因为它把一些功能模块化的封装了起来,代码更灵活易于修改。
而面向过程就紧密关联,不易于维护,适合干一些简单的场景。
场景示例:
  假设我们正在编写一个程序来模拟一个简单的咖啡机。
  在面向过程编程中,我们会关注实现咖啡机功能的具体步骤。程序可能会按以下步骤来组织:
    开始:启动咖啡机。
    选择咖啡类型:让用户选择要冲泡的咖啡类型(例如,美式、拿铁、卡布奇诺)。
    磨豆:根据选择的咖啡类型,磨相应量的咖啡豆。
    加热水:将水加热到适当的温度。
    冲泡咖啡:将热水通过咖啡粉。
    添加其他成分:如果是拿铁或卡布奇诺,还需要加热牛奶并泡沫。
    结束:关闭咖啡机。
  在面向过程的编程中,程序是由一系列按照特定顺序执行的函数或步骤组成。如果我们要改变咖啡的制作过程,比如添加一个新的咖啡品种,我们可能需要修改大部分的代码。
  而若是面向对象编程,我们会将咖啡机的各个部分抽象成对象,每个对象都有自己的属性和行为。
  例如,我们可以有以下对象:
    咖啡机(CoffeeMachine):负责启动和关闭,以及协调整个冲泡过程。
    咖啡豆(CoffeeBean):包含有关咖啡豆类型的信息。
    热水器(WaterHeater):负责加热水。
    咖啡滤篮(FilterBasket):负责装咖啡粉和冲泡咖啡。
    牛奶加热器(MilkHeater):负责加热和泡沫牛奶(如果需要)。
    如果我们想要添加一个新的咖啡品种,我们只需要添加一个新的对象或者修改现有的对象,而不需要改变整个程序的结构。
  在面向对象的编程中,每个对象都可以独立于其他对象存在,并且可以重用,易于维护和修改。

这就是Java的面向对象编程中,类和对象的概念,使用class关键字来定义一个类。使用new关键字和类的构造函数来创建对象。
在面向对象编程(OOP)中,类(Class)和对象(Object)是两个核心概念。它们是构建和组织代码的基本单元,允许程序员以模块化和可重用的方式来思考和设计软件。
目录
相关文章
|
24天前
|
安全 Java 编译器
Java对象一定分配在堆上吗?
本文探讨了Java对象的内存分配问题,重点介绍了JVM的逃逸分析技术及其优化策略。逃逸分析能判断对象是否会在作用域外被访问,从而决定对象是否需要分配到堆上。文章详细讲解了栈上分配、标量替换和同步消除三种优化策略,并通过示例代码说明了这些技术的应用场景。
Java对象一定分配在堆上吗?
|
28天前
|
Java API
Java 对象释放与 finalize 方法
关于 Java 对象释放的疑惑解答,以及 finalize 方法的相关知识。
46 17
|
27天前
|
存储 安全 Java
Java编程中的对象序列化与反序列化
【10月更文挑战第22天】在Java的世界里,对象序列化和反序列化是数据持久化和网络传输的关键技术。本文将带你了解如何在Java中实现对象的序列化与反序列化,并探讨其背后的原理。通过实际代码示例,我们将一步步展示如何将复杂数据结构转换为字节流,以及如何将这些字节流还原为Java对象。文章还将讨论在使用序列化时应注意的安全性问题,以确保你的应用程序既高效又安全。
|
1月前
|
存储 Java 数据管理
Java零基础-Java对象详解
【10月更文挑战第7天】Java零基础教学篇,手把手实践教学!
29 6
|
1月前
|
Oracle Java 关系型数据库
重新定义 Java 对象相等性
本文探讨了Java中的对象相等性问题,包括自反性、对称性、传递性和一致性等原则,并通过LaptopCharger类的例子展示了引用相等与内容相等的区别。文章还介绍了如何通过重写`equals`方法和使用`Comparator`接口来实现更复杂的相等度量,以满足特定的业务需求。
24 3
|
1月前
|
存储 Java
Java编程中的对象序列化与反序列化
【10月更文挑战第9天】在Java的世界里,对象序列化是连接数据持久化与网络通信的桥梁。本文将深入探讨Java对象序列化的机制、实践方法及反序列化过程,通过代码示例揭示其背后的原理。从基础概念到高级应用,我们将一步步揭开序列化技术的神秘面纱,让读者能够掌握这一强大工具,以应对数据存储和传输的挑战。
|
1月前
|
XML Java Maven
在 Cucumber 测试中自动将 Cucumber 数据表映射到 Java 对象
在 Cucumber 测试中自动将 Cucumber 数据表映射到 Java 对象
56 7
|
2月前
|
Java
java基础(12)抽象类以及抽象方法abstract以及ArrayList对象使用
本文介绍了Java中抽象类和抽象方法的使用,以及ArrayList的基本操作,包括添加、获取、删除元素和判断列表是否为空。
28 2
java基础(12)抽象类以及抽象方法abstract以及ArrayList对象使用
|
1月前
|
存储 Java 数据管理
Java零基础-Java对象详解
【10月更文挑战第3天】Java零基础教学篇,手把手实践教学!
20 1
|
1月前
|
Java 数据安全/隐私保护
java类和对象
java类和对象
26 5
下一篇
无影云桌面