类是模板、对象是实例;对象调用非静态成员,类名调用静态成员;构造方法初始化对象,名称同类名且无返回类型。

类与对象的相互调用,本质是“谁来调用谁”和“怎么访问”的问题。核心就两点:类是模板,对象是实例;调用必须基于实例(除非方法是 static),而类本身不能直接执行非静态成员的行为。
对象调用类中的方法和属性
这是最常见、最基础的方式。只要方法或属性不是 private 且未被 static 修饰,就可以通过对象名访问:
- 语法: 对象名.方法名(实参) 或 对象名.属性名
- 前提:该方法/属性在类中已定义,并具备可访问权限(如 public、protected 或包内默认)
- 注意:如果方法是 void 类型,调用后不返回值;如果有返回值,可用变量接收
类名调用方法——仅限 static 成员
只有用 static 修饰的方法或属性,才能直接用 类名.方法名() 调用:
- static 方法属于类本身,不属于任何对象,因此无需创建对象即可使用
- 常见例子:Math.random()、System.out.println()、自定义工具类中的 public static int getMax(int a, int b)
- 限制:static 方法内部不能直接访问非 static 的属性或方法(因为此时可能还没有对象存在)
类内部方法如何调用其他方法或属性
在同一个类里,方法之间、方法与属性之间的调用更灵活,但需注意修饰符和 static 上下文:
立即学习“Java免费学习笔记(深入)”;
- 非 static 方法中,可直接调用本类其他非 static 方法或访问非 static 属性(隐含使用 this)
- 非 static 方法中也可调用本类的 static 方法或访问 static 属性(无需加类名,但加也合法)
- static 方法中,只能调用其他 static 方法、访问 static 属性;若要操作非 static 成员,必须先 new 出对象再调用
构造方法是特殊的“类→对象”桥梁
构造方法不是用来被随意调用的普通方法,它只在 new 类名() 时自动触发,作用是初始化新对象:
- 名称必须与类名完全一致,无返回类型(连 void 都不能写)
- 可重载(有参/无参),支持用 this(...) 在一个构造方法中调用本类另一个构造方法
- 它让类真正“产出”一个可用的对象,之后才能进行对象层面的调用


















