【Java那些年系列-启航篇 04】Java程序架构:深入理解类与对象的设计原则

2024-04-25 19:14:54 浏览数 (1)

文章目录
  • JavaSE详细学习路线图以及思维导图
  • 【Java那些年系列 04】 Java程序架构:深入理解类与对象的设计原则
  • 01 代码组织
    • 1.1 类(Classes):Java程序的构建蓝图
      • 1. 类的定义
      • 2. 类的属性
      • 3. 类的方法
      • 4. 构造方法
    • 1.2 方法(Methods):类的行为体现
      • 1. 实例方法
      • 2. 静态方法
      • 3. 抽象方法
    • 1.3 变量(Variables):存储数据的容器
      • 1. 实例变量
      • 2. 类变量
      • 3. 局部变量
  • 02 源代码文件
    • 2.1 命名规则:Java程序的命名艺术
      • 1. 标识符命名规则
      • 2. 类命名规则
      • 3. 方法和变量命名规则
      • 4. 常量命名规则
    • 2.2 文件扩展名:Java源代码的文件标识
      • 1. Java源文件
      • 2. 类文件
      • 3. 包文件
      • 2.4 源码映射文件
  • 03 包和访问控制
    • 3.1 包(Packages):命名空间和模块化
      • 1. 包的定义和作用
      • 2. 包的声明
      • 3. 包的访问控制
    • 3.2 访问控制:保护类和成员
      • 1. 访问修饰符
      • 2. 访问控制的重要性
    • 3.3 组织类:构建程序的基石
      • 1. 类的定义
      • 2. 类的组织
    • 3.4 接口(Interfaces):定义契约
      • 1. 接口的定义
      • 2. 接口的作用
      • 3. 实现接口

【Java那些年系列 04】 Java程序架构:深入理解类与对象的设计原则

01 代码组织

Java,作为一种面向对象的编程语言,以其强大的类库、跨平台能力和简洁的语法设计而广受欢迎。Java程序的结构基于类和对象的概念,其中类是创建对象的模板,方法是类的行为定义,变量则是状态的表示。为了编写出高效、可维护的Java程序,深入理解类、方法和变量的结构和用法至关重要。

1.1 类(Classes):Java程序的构建蓝图
1. 类的定义

类是Java程序中的基本构建块,它定义了一组具有相同属性和行为的对象。类的定义始于class关键字,后跟类名和类体。类体中包含了类的属性(变量)和方法(函数)。

代码语言:javascript复制
public class MyClass {
    // 属性和方法的声明
}
2. 类的属性

属性是类的状态信息,通常用变量来表示。它们定义了对象的状态,并且可以有不同的访问修饰符来控制其可见性,如publicprivateprotecteddefault

代码语言:javascript复制
public class User {
    private String name; // 私有属性,只能在类内部访问
    public int age;     // 公开属性,可以从任何地方访问
}
3. 类的方法

方法是类的行为定义,它们描述了对象可以执行的操作。方法由访问修饰符、返回类型、方法名和参数列表组成。

代码语言:javascript复制
public class Calculator {
    public int add(int a, int b) {
        return a   b;
    }
}
4. 构造方法

构造方法是特殊的方法,用于在创建对象时初始化对象的状态。它们的名称与类名相同,并且没有返回类型。

代码语言:javascript复制
public class Car {
    private String model;
    private int year;

    public Car(String model, int year) {
        this.model = model;
        this.year = year;
    }
}
1.2 方法(Methods):类的行为体现
1. 实例方法

实例方法是定义在类中,与对象实例相关联的方法。它们可以访问类的属性和其他实例方法。

代码语言:javascript复制
public class Person {
    private String firstName;
    private String lastName;

    public void introduce() {
        System.out.println("Hello, my name is "   firstName   " "   lastName);
    }
}
2. 静态方法

静态方法是属于类的,而不是类的某个实例。它们可以在没有创建类实例的情况下调用。

代码语言:javascript复制
public class MathUtils {
    public static int max(int a, int b) {
        return (a > b) ? a : b;
    }
}
3. 抽象方法

抽象方法是没有具体实现的方法,它只有声明而没有方法体。抽象方法通常在抽象类中定义,并要求子类实现。

代码语言:javascript复制
public abstract class Shape {
    public abstract double getArea();
}
1.3 变量(Variables):存储数据的容器
1. 实例变量

实例变量是定义在类中,属于对象的状态信息。每个对象都有自己的一套实例变量副本。

代码语言:javascript复制
public class Account {
    private double balance;

    public void deposit(double amount) {
        balance  = amount;
    }
}
2. 类变量

类变量也称为静态变量,它们属于类本身,而不是类的某个实例。类变量在所有对象之间共享。

代码语言:javascript复制
public class Counter {
    private static int count = 0;

    public Counter() {
        count  ;
    }

    public static int getCount() {
        return count;
    }
}
3. 局部变量

局部变量是在方法内部定义的变量,它们只在方法被调用的执行过程中存在。

代码语言:javascript复制
public int multiply(int a, int b) {
    int result = a * b;
    return result;
}

02 源代码文件

Java作为一种广泛使用的编程语言,其程序结构的规范性对于代码的可读性、可维护性和跨平台兼容性至关重要。命名规则和文件扩展名是Java程序结构中的基础元素,它们确保了代码的组织性和一致性。

2.1 命名规则:Java程序的命名艺术
1. 标识符命名规则

在Java中,标识符是用于命名类、方法、变量等程序元素的名称。Java的标识符命名规则如下:

  • 标识符由字母、数字、下划线(_)或美元符号($)组成,但不能以数字开头。
  • 标识符是区分大小写的,即myVariablemyvariable是两个不同的标识符。
  • 保留字(如publicprivateclass等)不能用作标识符。
2. 类命名规则

类名应该清晰、简洁,并能够反映类的作用或特性。以下是一些类命名的最佳实践:

  • 使用名词或名词短语。
  • 每个单词的首字母大写,即大驼峰命名法(CamelCase),例如MyClass
  • 避免使用下划线和美元符号,除非有特殊原因。
3. 方法和变量命名规则

方法和变量的命名应该直观、有意义,以便于理解其功能和用途。以下是一些命名的最佳实践:

  • 方法名通常使用动词或动词短语,表示执行的操作,例如calculateSum
  • 变量名应该描述其所存储的数据,例如employeeList表示一个员工列表。
  • 同样使用小驼峰命名法(lowerCamelCase),例如userName
4. 常量命名规则

常量是程序中固定不变的值,它们的命名规则如下:

  • 全部字母大写,单词之间使用下划线分隔,例如MAX_VALUE
  • 避免使用缩写,除非是广泛认可的缩写,例如PI
2.2 文件扩展名:Java源代码的文件标识
1. Java源文件

Java源代码文件的扩展名是.java。每个源文件通常包含一个公共类的定义,并且文件名应与公共类名相同。例如,包含MyClass的文件应命名为MyClass.java

2. 类文件

编译Java源代码后,会产生.class扩展名的字节码文件。这些文件包含了编译后的Java代码,可以由Java虚拟机(JVM)执行。

3. 包文件

Java的包文件通常具有.jar(Java Archive)扩展名,它们是包含了多个类文件和其他资源的压缩文件。.jar文件可以作为单个实体被部署和运行,便于程序的分发和安装。

2.4 源码映射文件

在进行代码混淆或优化时,可能会生成.map.smap等源码映射文件,这些文件用于映射混淆后的代码到原始源代码,便于调试。

03 包和访问控制

Java程序结构的设计是软件开发中的关键环节,它直接影响到代码的可读性、可维护性和扩展性。Java通过包(Packages)、访问控制、类和接口的组织来提供强大的结构化编程能力。本文将详细探讨这些概念,帮助开发者构建清晰、高效的Java程序。

3.1 包(Packages):命名空间和模块化
1. 包的定义和作用

包是Java中用于组织类和接口的命名空间。它们提供了一种将类分组的方法,避免了名称冲突,并提供了访问控制。包名通常反映了类的功能和位置,使用反向互联网域名的方式来确保唯一性。

代码语言:javascript复制
package com.example.myapp;
2. 包的声明

在Java源文件中,包的声明是文件的第一行,使用package关键字后跟包名。

代码语言:javascript复制
package com.company.project;

public class MyClass {
    // ...
}
3. 包的访问控制

包可以具有不同的访问级别,如公开(public)或私有(private)。默认情况下,如果包没有指定访问级别,则为默认包,其访问级别为包私有。

3.2 访问控制:保护类和成员
1. 访问修饰符

Java提供了四种访问修饰符来控制类、方法和变量的访问级别:

  • public:公开访问级别,可以被任何其他类访问。
  • protected:受保护的访问级别,可以被同一个包内的类和子类访问。
  • default(无修饰符):默认访问级别,只能被同一个包内的类访问。
  • private:私有访问级别,只能被声明它的类访问。
2. 访问控制的重要性

访问控制是封装原则的一部分,它帮助隐藏类的内部实现细节,只暴露必要的接口。这提高了代码的安全性和灵活性。

3.3 组织类:构建程序的基石
1. 类的定义

类是Java中定义对象的蓝图。它包含了字段(变量)和方法(函数),以及构造函数用于初始化对象。

代码语言:javascript复制
public class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
2. 类的组织

类应该根据其功能和职责进行组织。相关功能的类可以放在同一个包中,以便于管理和维护。

3.4 接口(Interfaces):定义契约
1. 接口的定义

接口在Java中是一种完全抽象的类,它只包含未实现的方法声明。接口定义了类必须实现的方法,但不提供实现。

代码语言:javascript复制
public interface Drivable {
    void drive();
}
2. 接口的作用

接口用于定义类之间的契约。它们允许多个不相关的类共享相同的方法签名,而不需要共享实现代码。

3. 实现接口

类可以使用implements关键字来实现一个或多个接口,并且必须提供所有接口方法的具体实现。

代码语言:javascript复制
public class Car implements Drivable {
    public void drive() {
        System.out.println("Car is driving on the road.");
    }
}

0 人点赞