第3章:面向对象程序设计

3.1 面向对象概念

  • 定义:

    • **面向对象编程(OOP)**是一种编程范式,它使用“对象”来设计软件。对象是数据和操作这些数据的方法的封装。
  • 核心概念:

    • 类(Class):类是对具有相同属性和行为的对象的一种抽象描述。它是创建对象的模板或蓝图。
    • 对象(Object):对象是类的具体实例,表示现实世界中的某个实体。
    • 属性(Attribute):对象的状态,通常由类中的变量表示。
    • 方法(Method):对象的行为,通常由类中的函数表示。
    • 封装(Encapsulation):隐藏对象内部的数据细节,并提供对外部访问这些数据的受控接口。
    • 继承(Inheritance):新类可以从现有类派生,复用代码并建立层次化的类型关系。
    • 多态(Polymorphism):不同的对象可以通过统一的接口调用相同名称的方法,在不同的上下文中表现出不同的行为。

3.2 面向对象编程

  • 优势:

    • 模块化:将问题分解为多个独立的模块,每个模块负责特定的功能。
    • 可维护性:易于扩展和修改,因为变化只影响相关的类或对象。
    • 重用性:通过继承和组合可以复用现有的代码。
    • 灵活性:支持多态性,允许不同类型的对象以一致的方式被处理。
    • 3.3 构造方法定义:

    • 构造方法是特殊的方法,用于初始化新创建的对象。它的名字必须与类名相同,并且没有返回类型(连void也没有)
    • 特点:
    • 每个类都可以有一个或多个构造方法,它们可以带有参数或不带参数。
    • 如果一个类没有显式定义构造方法,Java会提供一个默认的无参构造方法。
    • 可以使用this()来调用同一个类中的其他构造方法,实现构造方法之间的重载。示例:
    • public class Person {
          private String name;
          private int age;
      
          // 无参构造方法
          public Person() {
              this("Unknown", 0); // 调用另一个构造方法
          }
      
          // 带参构造方法
          public Person(String name, int age) {
              this.name = name;
              this.age = age;
          }
      }

      3.4 this 关键字

    • this关键字用来引用当前对象自身,区分成员变量和局部变量。

    • 在构造方法中调用本类的其他构造方法(必须作为第一条语句)。
    • 示例:
    • public class Employee {
          private String name;
      
          public Employee(String name) {
              this.name = name; // 区分成员变量name和参数name
          }
      
          public void setName(String name) {
              this.name = name; // 设置成员变量name的值
          }
      }
      

       

      3.5 static 关键字:

       

      static关键字用于声明静态成员(包括变量和方法),它们属于类而不是类的任何实例。静态成员可以在没有创建对象的情况下直接通过类名访问。所有对象共享相同的静态成员副本。

    • public class Counter {
          private static int count = 0;
      
          public Counter() {
              count++;
          }
      
          public static int getCount() {
              return count;
          }
      }
      

        

      3.6 包

      • 定义:

      • 包是用来组织类的一种机制,类似于文件系统中的目录结构。它有助于避免命名冲突,并提供了访问控制。
      • 声明包:

      • 使用package关键字在源文件的第一行声明包名。例如
      • package com.example;
        

        导入包:

      • 使用import语句引入其他包中的类或接口。例如:
      • 学习心得: 通过学习面向对象的基础知识,我的编程思维方式发生了显著变化。

        遇到的难点及解决方法: 初期最大的挑战在于理解类与对象之间的关系以及如何正确地定义和使用它们。例如,区分静态成员和实例成员的功能及其适用场景曾让我感到困惑。通过编写大量的示例代码并进行调试,我逐渐熟悉了这些概念的实际应用

posted @ 2024-12-11 20:29  乘风破浪的小落夜  阅读(65)  评论(0)    收藏  举报