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)是两个核心概念。它们是构建和组织代码的基本单元,允许程序员以模块化和可重用的方式来思考和设计软件。
目录
相关文章
|
5天前
|
存储 缓存 监控
Java面试题:在Java中,对象何时可以被垃圾回收?编程中,如何更好地做好垃圾回收处理?
Java面试题:在Java中,对象何时可以被垃圾回收?编程中,如何更好地做好垃圾回收处理?
17 0
|
18天前
|
存储 安全 Java
小白聊《JAVA编程思想》-一切都是对象(一)
小白聊《JAVA编程思想》-一切都是对象(一)
10 0
|
12天前
|
Java 数据安全/隐私保护
|
12天前
|
Java
Java中的对象克隆详解
Java中的对象克隆详解
|
12天前
|
存储 Java 开发者
Java中的对象序列化详解
Java中的对象序列化详解
|
14天前
|
安全 Java
JAVA反射:如何在运行时“创造”你的对象?
【7月更文挑战第1天】Java反射机制允许在运行时动态创建对象,常用于插件系统和框架开发。与`new`关键字相比,反射提供更大的灵活性,能根据条件决定对象类型,但牺牲了性能和代码可读性。示例展示了如何通过`Class.forName()`和`Constructor.newInstance()`创建对象,过程中需处理异常。反射还可访问私有成员,增加安全风险,故使用时需谨慎。
13 2
|
14天前
|
Java
Java面向对象 ( 类与对象 | 构造方法 | 方法的重载 )
Java面向对象 ( 类与对象 | 构造方法 | 方法的重载 )
|
17天前
|
JSON Java fastjson
老程序员分享:java对象转json
老程序员分享:java对象转json
23 3
|
18天前
|
设计模式 缓存 Java
Java设计模式:享元模式实现高效对象共享与内存优化(十一)
Java设计模式:享元模式实现高效对象共享与内存优化(十一)
|
5天前
|
存储 缓存 算法
Java面试题:给出代码优化的常见策略,如减少对象创建、使用缓存等。
Java面试题:给出代码优化的常见策略,如减少对象创建、使用缓存等。
7 0