Skip to content

类与方法

概述

在 Java 中,类是对象的蓝图或模板。类定义了对象的属性(字段)和行为(方法)。对象是类的实例,具有类所定义的属性和方法。Java 是一种面向对象的编程语言,支持封装、继承和多态等特性。

类的种类

  1. 普通类

    • 普通类是最常见的类类型,定义了对象的属性和方法。
    • 示例:
      java
      public class Dog {
          String name;
          int age;
      
          public void bark() {
              System.out.println(name + " says Woof!");
          }
      }
  2. 抽象类

    • 抽象类是不能被实例化的类,通常包含一个或多个抽象方法(没有实现的方法)。
    • 抽象类用于提供子类的共同接口。
    • 示例:
      java
      public abstract class Animal {
          abstract void makeSound(); // 抽象方法
      
          public void eat() {
              System.out.println("This animal eats food.");
          }
      }
      
      public class Cat extends Animal {
          @Override
          void makeSound() {
              System.out.println("Meow");
          }
      }
  3. 接口

    • 接口是一种特殊的引用类型,定义了一组方法,但不提供实现。
    • 类可以实现一个或多个接口,必须实现接口中的所有方法。
    • 示例:
      java
      public interface Flyable {
          void fly();
      }
      
      public class Bird implements Flyable {
          @Override
          public void fly() {
              System.out.println("The bird is flying.");
          }
      }
  4. 内部类

    • 内部类是定义在另一个类内部的类,可以访问外部类的成员。
    • 示例:
      java
      public class OuterClass {
          private String outerField = "Outer field";
      
          public class InnerClass {
              public void display() {
                  System.out.println("Accessing: " + outerField);
              }
          }
      }

方法

方法是类中定义的行为,包含一组执行特定任务的语句。方法可以有参数和返回值。

方法的组成部分

  • 方法名:用于标识方法的名称。
  • 返回类型:方法返回值的类型,如果没有返回值,则使用 void
  • 参数列表:方法接受的参数,可以为空。
  • 方法体:包含方法执行的代码。

访问修饰符

Java 中的方法可以使用访问修饰符来控制其可见性。常见的访问修饰符包括:

  • public:公共访问,任何其他类都可以访问。
  • private:私有访问,只有定义该方法的类可以访问。
  • protected:受保护访问,只有同一包中的类和子类可以访问。
  • 默认(无修饰符):包访问,只有同一包中的类可以访问。

示例代码

java
public class Calculator {
    // 加法方法
    public int add(int a, int b) {
        return a + b;
    }

    // 减法方法
    public int subtract(int a, int b) {
        return a - b;
    }
}

静态与非静态

静态(Static)

  • 定义:静态成员(字段和方法)属于类本身,而不是类的实例。静态成员在内存中只有一份,所有实例共享。
  • 访问:可以通过类名直接访问静态成员,而不需要创建类的实例。
  • 使用场景:适用于不依赖于实例状态的属性和方法,例如常量、工具方法等。

示例代码

java
public class MathUtils {
    // 静态常量
    public static final double PI = 3.14159;

    // 静态方法
    public static int add(int a, int b) {
        return a + b;
    }
}

public class StaticExample {
    public static void main(String[] args) {
        // 访问静态常量
        System.out.println("圆周率: " + MathUtils.PI);
        
        // 访问静态方法
        int sum = MathUtils.add(5, 3);
        System.out.println("和: " + sum);
    }
}

非静态(Instance)

  • 定义:非静态成员(字段和方法)属于类的实例。每个实例都有自己的非静态成员。
  • 访问:必须通过类的实例来访问非静态成员。
  • 使用场景:适用于需要依赖于实例状态的属性和方法,例如对象的特定属性和行为。

示例代码

java
public class Person {
    // 非静态字段
    private String name;

    // 构造方法
    public Person(String name) {
        this.name = name;
    }

    // 非静态方法
    public void introduce() {
        System.out.println("你好,我是 " + name);
    }
}

public class InstanceExample {
    public static void main(String[] args) {
        // 创建 Person 类的实例
        Person person1 = new Person("Alice");
        Person person2 = new Person("Bob");

        // 访问非静态方法
        person1.introduce(); // 输出: 你好,我是 Alice
        person2.introduce(); // 输出: 你好,我是 Bob
    }
}

个人感悟

理解类与对象是掌握 Java 编程的基础。通过合理设计类和对象,可以提高代码的可读性和可维护性。面向对象的特性如封装、继承和多态使得 Java 成为一种强大的编程语言,适用于各种应用开发。