面向对象编程(OOP)

面向对象是Java的核心编程思想,包含三大特性:封装、继承、多态。

类和对象

// 定义一个类 public class Person { // 属性(字段) private String name; private int age; // 构造方法 public Person(String name, int age) { this.name = name; this.age = age; } // 方法 public void sayHello() { System.out.println("你好,我是" + name); } // Getter 和 Setter public String getName() { return name; } public void setName(String name) { this.name = name; } } // 创建对象 Person person = new Person("张三", 25); person.sayHello();

封装

通过访问修饰符控制类成员的可见性:

  • public:公开,任何类都可访问
  • private:私有,仅本类可访问
  • protected:受保护,本包和子类可访问
  • 默认:本包可访问

继承

// 父类 public class Animal { protected String name; public void eat() { System.out.println(name + "在吃东西"); } } // 子类继承父类 public class Dog extends Animal { public Dog(String name) { this.name = name; } public void bark() { System.out.println(name + "在汪汪叫"); } }

多态

// 多态:父类引用指向子类对象 Animal animal = new Dog("小黑"); animal.eat(); // 调用Dog继承的方法 // 方法重写(Override) @Override public void eat() { System.out.println(name + "正在狼吞虎咽"); }

抽象类和接口

抽象类

public abstract class Shape { protected String color; // 抽象方法,子类必须实现 public abstract double getArea(); // 普通方法 public String getColor() { return color; } } public class Circle extends Shape { private double radius; @Override public double getArea() { return Math.PI * radius * radius; } }

接口

// 定义接口 public interface Flyable { void fly(); // 默认public abstract } // 实现接口 public class Bird extends Animal implements Flyable { @Override public void fly() { System.out.println("鸟儿在飞翔"); } }

集合框架

Java集合框架提供了强大的数据结构支持。

List 列表

import java.util.ArrayList; import java.util.List; List list = new ArrayList<>(); list.add("Java"); list.add("Python"); list.add("C++"); System.out.println(list.get(0)); // Java System.out.println(list.size()); // 3 list.remove(1); // 删除Python for (String item : list) { System.out.println(item); }

Map 映射

import java.util.HashMap; import java.util.Map; Map scores = new HashMap<>(); scores.put("张三", 90); scores.put("李四", 85); scores.put("王五", 95); System.out.println(scores.get("张三")); // 90 // 遍历Map for (Map.Entry entry : scores.entrySet()) { System.out.println(entry.getKey() + ": " + entry.getValue()); }

Set 集合

import java.util.HashSet; import java.util.Set; Set set = new HashSet<>(); set.add("Apple"); set.add("Banana"); set.add("Apple"); // 重复元素不会被添加 System.out.println(set.size()); // 2

异常处理

try { // 可能出错的代码 int result = 10 / 0; } catch (ArithmeticException e) { // 处理异常 System.out.println("除数不能为0"); e.printStackTrace(); } finally { // 无论是否异常都会执行 System.out.println("清理资源"); } // 自定义异常 public class MyException extends Exception { public MyException(String message) { super(message); } } // 抛出异常 public void checkAge(int age) throws MyException { if (age < 0) { throw new MyException("年龄不能为负数"); } }

Lambda表达式(Java 8+)

🔥 Lambda表达式

Lambda表达式让代码更简洁,是函数式编程的重要特性。

// 传统写法 Runnable r1 = new Runnable() { @Override public void run() { System.out.println("Hello"); } }; // Lambda写法 Runnable r2 = () -> System.out.println("Hello"); // 使用Stream API List numbers = Arrays.asList(1, 2, 3, 4, 5); numbers.stream() .filter(n -> n % 2 == 0) // 过滤偶数 .map(n -> n * 2) // 乘以2 .forEach(System.out::println); // 输出

💡 进阶学习建议

深入理解面向对象思想,多练习设计模式。尝试用Java实现一些小项目,如学生管理系统、图书管理系统等。