Java 基础练习(一):创建类并调用对象

📌 适合人群:Java 零基础入门

🛠 环境:JDK 8+,IDEA

📂 配套代码:新建普通 Java 项目即可,代码放在 src 目录下


一、练习目标

  • 学会创建一个类(Class),定义属性和方法
  • 学会在另一个类中创建对象并调用它的方法
  • 理解类 与对象的关系

最终效果:程序运行后输出

java 复制代码
你好,我叫小明,今年20岁。

二、创建 Person 类

右键 src → New → Java Class,命名为 Person,代码如下:

java 复制代码
public class Person {
    // 1. 属性(成员变量)
    String name;
    int age;

    // 2. 构造方法:创建对象时初始化属性
    // 注意:方法名与类名相同,没有返回值类型
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // 3. 普通方法:自我介绍
    public void introduce() {
        System.out.println("你好,我叫" + name + ",今年" + age + "岁。");
    }

    // 4. 普通方法:过生日,年龄 +1
    public void haveBirthday() {
        age++;
        System.out.println("过生日了!我现在" + age + "岁了。");
    }
}

代码解析

部分 说明
String name; int age; 属性:描述对象"有什么"
public Person(...) 构造方法:对象出生时给它赋初值
this.name = name; this 指当前对象,区分成员变量和参数
public void introduce() 方法:描述对象"会做什么",void 表示没有返回值

三、创建 Main 类并调用

再新建一个 Main 类:

java 复制代码
public class Main {
    public static void main(String[] args) {
        // 1. 创建对象(实例化):new 关键字调用构造方法
        Person person = new Person("小明", 20);

        // 2. 调用对象的方法:对象名.方法名()
        person.introduce();
        person.haveBirthday();
        person.introduce();   // 年龄已经变了

        // 3. 可以创建多个对象,互不影响
        Person person2 = new Person("小红", 19);
        person2.introduce();
    }
}

四、运行与输出

点击 main 方法左侧绿色 ▶ 箭头运行:

复制代码
你好,我叫小明,今年20岁。
过生日了!我现在21岁了。
你好,我叫小明,今年21岁。
你好,我叫小红,今年19岁。

五、常见错误

1. 变量名重复

java 复制代码
Person person = new Person("小明", 20);
Person person = new Person("小红", 19);   // ❌ 报错:person 重复定义

同一方法内变量名不能重复 ,第二个改名为 person2 即可。

2. 类名与文件名不一致

public class Person 必须保存在 Person.java 中,大小写也要一致。

3. 构造方法写错

java 复制代码
public void Person(String name, int age) { }  // ❌ 多了 void,变成了普通方法
public Person(String name, int age) { }        // ✅ 构造方法没有返回值类型

六、知识点总结

  1. 类是图纸,对象是产品 :Person 是图纸,new Person(...) 造出来的才是具体的人
  2. 构造方法 :名字 = 类名,无返回值,只在 new 时执行一次
  3. 方法调用 :对象.方法()
  4. 每个对象独立 :person 过生日不影响 person2 的年龄

七、课后练习

  1. 给 Person 增加 study(String subject) 方法,输出"xx正在学习xx"
  2. 把 name、age 改成你自己的信息运行一遍
  3. 思考:age++ 和 age = age + 1 有什么区别?
相关推荐
2501_9445215917 分钟前
Ramda 跨端三方库仓颉适配全流程
开发语言·javascript·flutter·php
行思理34 分钟前
go语言学习难度及适合学习的人群
开发语言·学习·golang
wangchunyu1142 小时前
JAVA CompletableFuture异步编程实战
java·开发语言·python
paopaokaka_luck3 小时前
流浪动物救助与收养系统(DeepSeek AI对话、 ECharts多维分析、救助流程衔接、领养与回访衔接、 捐赠确认与公示、志愿者协作)
java·前端·javascript·人工智能·mysql·echarts·推荐算法
Thomas.Sir3 小时前
第9课:SpringBoot4.x Web开发基础:WebMvc自动配置、静态资源、请求参数接收
java·spring boot
程序 代码狂人3 小时前
切片表与分区表的区别(数据开发面试版)
java·大数据·开发语言·数据仓库·算法
2501_944521594 小时前
Deepmerge 跨端三方库仓颉适配全流程
java·python·eclipse·github
meiying88384 小时前
快递单号批量查询Python脚本:从手动到自动化的完整实现
开发语言·python·自动化
@大迁世界5 小时前
告别 Go,拥抱 Rust
开发语言·golang·rust
SEO_juper5 小时前
Node.js 重定向链检测工具:301 跳了几跳、有没有成环,一次看清
xml·开发语言·python·node.js·json·bash