java 快速上手开发 2

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 接口注入实现类代理)。

相关推荐
1024奇点6 小时前
【仓颉语言入门 · 第二篇 第 22 课】
开发语言·ide·开源
Csvn6 小时前
WASM
前端
Warren2Lynch7 小时前
C4 模型详解:利用 Visual Paradigm 可视化软件架构的综合指南
开发语言·uml
天河归来7 小时前
第三方接口不稳定,如何让核心任务继续完成
java·大数据
Knight_AL7 小时前
Java 文件下载时文件名中的 `#` 被转换成 `%23`?一次 URL 编码与解码问题排查
java·开发语言
修己xj8 小时前
我用 AI 给自己写了一个 Markdown 编辑器,然后把它开源了
前端
FRing038 小时前
vue2干货总结2(v-bind、v-for、v-model、指令修饰符、v-bind操作class和style)
开发语言·前端·vue.js·vue2
幸运小猿8 小时前
模拟慢上传-处理超时重试image 丢失线上问题
前端·javascript·html
by209998 小时前
C++ 智能指针的所有权与使用
开发语言·c++·经验分享
砚底藏山河8 小时前
python量化自定义周期 K 线合成
java·开发语言·数据库·python·金融