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 有什么区别?
相关推荐
сокол几秒前
【Python-基础-环境搭建】Ubuntu Python 开发环境搭建:编译、pipenv、pyenv、远程连接
开发语言·python·ubuntu
vx_Biye_Design几秒前
springbootNBA数据分析系统平台42434-计算机课程设计、毕业设计
java·vue.js·spring boot·python·django·课程设计·express
Q26433650231 分钟前
【有源码】基于springboot的知识产权管理系统-知识产权咨询问答管理系统-知识产权价值评估管理系统
java·spring boot·mysql·spring·毕业设计·javaweb·课程设计
liangshanbo12152 小时前
JavaScript 面试题:Object.keys() 的返回顺序是无序的吗?
开发语言·javascript·ecmascript
朝朝辞暮i8 小时前
C++ 第 23 课:class —— 开始真正进入面向对象
开发语言·c++·算法
leikooo9 小时前
用餐厅和盘子理解栈和堆
java·数据结构·链表·rust
小师兄吃牛肉9 小时前
C语言篇:宏
c语言·开发语言
郑同学的笔记9 小时前
【c++随笔28】strcmp 和 memcmp对比
开发语言·c++
言乐610 小时前
Python根据无法识别搜索词找出可能输入内容模型
开发语言·python·django·virtualenv·pygame
weixin_3077791310 小时前
有限产能智能排产与动态重排智能体:从需求解构到技术实现
开发语言·人工智能·算法·架构