🎯 前端转 Java 后端:彻底搞懂的 class 类基础
从前端开发转向 Java 后端,是一个热门而高价值的技术跨越。虽然 JavaScript(尤其是 ES6+)中也有 class
的语法,但 Java 是一种严格面向对象的语言,对类的理解要更加深入、彻底。而且使用频率更高
🧠 Why 先搞懂类(class)?
在前端中,我们可能会用 class
来组织 Vue 组件、React 类组件、或者写 TypeScript:
class Person {
constructor(name) {
this.name = name;
}
sayHi() {
console.log(`Hi, I'm ${this.name}`);
}
}
Java 的类语法看起来很像,但底层理念和机制却大不同:
-
Java 是强类型语言(类型必须明确)
-
Java 中一切都是对象(除了基本类型)
-
Java 中的类不仅仅是组织代码的结构,还是创建对象、抽象行为的核心
🧱 Java 中 class 的基本结构
先看一个最简单的 Java 类:
public class Person {
// 属性(字段)
String name;
int age;
// 构造函数
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// 方法
public void sayHi() {
System.out.println("Hi, I'm " + name + ", " + age + " years old.");
}
}
💡 与 JavaScript 的关键区别:
JavaScript | Java |
---|---|
动态类型 | 静态强类型 |
方法默认可访问 | 需要加 public /private 等 |
this 指向变化(函数作用域) | this 永远指向当前对象 |
类可以动态添加属性 | 属性必须声明、初始化 |
没有构造方法重载 | 支持多个构造函数(重载) |
🚀 创建对象与使用类
public class Main {
public static void main(String[] args) {
Person p = new Person("Alice", 25);
p.sayHi(); // 输出:Hi, I'm Alice, 25 years old.
}
}
☝️ Java 的类和对象用得非常频繁,是业务逻辑、数据模型的核心构件。
🔐 可见性控制符(访问修饰符)
Java 使用关键字控制类、方法、属性的访问范围:
修饰符 | 含义 |
---|---|
public | 公开,任何类都可访问 |
private | 私有,仅类内部可访问 |
protected | 受保护,同包或子类可访问 |
默认(包可见) | 同包可访问 |
这就是封装(Encapsulation)概念的体现 —— 控制数据暴露范围。
🧬 类与面向对象三大特性
Java 面向对象编程(OOP)最核心的三大特性:
1. 封装(Encapsulation)
public class User {
private String password;
public void setPassword(String pwd) {
if (pwd.length() >= 6) {
this.password = pwd;
}
}
public String getPassword() {
return "******"; // 防止直接暴露
}
}
使用 private
+ getter/setter 实现保护。
2. 继承(Inheritance)
public class Animal {
public void speak() {
System.out.println("Animal speaks.");
}
}
public class Dog extends Animal {
public void speak() {
System.out.println("Dog barks.");
}
}
子类 Dog
继承父类 Animal
,可复用/重写方法。
3. 多态(Polymorphism)
public class Main {
public static void main(String[] args) {
Animal a = new Dog(); // 多态:父类引用指向子类对象
a.speak(); // 输出:Dog barks.
}
}
这对于接口解耦和扩展性设计至关重要。
🔁 构造函数重载,js Calss中无这个
Java 支持多个构造函数(同名不同参数):
public class Book {
String title;
double price;
public Book(String title) {
this.title = title;
}
public Book(String title, double price) {
this.title = title;
this.price = price;
}
}
🔄 static 关键字
static
用于定义类的静态属性或方法,无需创建对象即可访问。
public class MathUtil {
public static int add(int a, int b) {
return a + b;
}
}
// 使用方式
int result = MathUtil.add(3, 5);
✅ 前端转 Java,掌握 class 个人感觉是需要提前搞清楚的
Java 语言基础 | 推荐程度 | 理解难度 |
---|---|---|
class 类、对象 | ★★★★★ | 中等 |
访问修饰符 | ★★★★☆ | 中等 |
构造函数/重载 | ★★★★☆ | 易 |
继承、多态 | ★★★★☆ | 中等略难 |
static 静态属性 | ★★★☆☆ | 易 |