1. 类与对象
Java 是面向对象语言,一切代码都写在类中。类定义了一类事物的属性(字段)和行为(方法)。
public class Person {
// 字段
String name;
int age;
// 方法
public void introduce() {
System.out.println("我叫" + name + ",今年" + age + "岁。");
}
}
创建对象:
Person person = new Person();
person.name = "张三";
person.age = 25;
person.introduce();
2. 构造器与 this
构造器用于创建对象时初始化字段,名字与类名相同,没有返回类型。
public class Person {
String name;
int age;
// 带参构造器
public Person(String name, int age) {
this.name = name; // this 指当前对象
this.age = age;
}
}
使用构造器:
Person p = new Person("李四", 30);
this 用于区分字段和参数同名的情况。
3. 封装
封装是将字段设为 private,通过公共的 getter/setter 访问,保护数据安全
public class Person {
private String name;
private int 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; }
}
在 Spring 项目中,常用 Lombok 的 @Data 注解自动生成这些方法,原理相同。
4. 继承(extends)
子类继承父类,获得父类所有非私有成员,并可以扩展自己的属性和方法。
public class Animal {
private String name;
public Animal(String name) { this.name = name; }
public void eat() { System.out.println(name + " is eating."); }
public String getName() { return name; }
}
public class Dog extends Animal {
public Dog(String name) { super(name); } // 调用父类构造器
public void bark() { System.out.println(getName() + " says Woof!"); }
}
-
super(...)调用父类构造器,必须在子类构造器第一行。 -
Java 是单继承,一个类只能有一个父类。
5. 方法重写(Override)
子类可以重写父类的方法,签名必须一致,使用 @Override 注解。
public class Cat extends Animal {
public Cat(String name) { super(name); }
@Override
public void eat() {
System.out.println(getName() + " is eating fish.");
}
}
6. 多态
父类引用可以指向子类对象,调用方法时动态绑定到实际对象类型。
Animal animal = new Cat("Kitty");
animal.eat(); // 输出 Kitty is eating fish.
这是面向对象的核心特性之一,也是 Spring 框架中大量使用的设计模式(例如 UserRepository 接口注入实现类代理)。