java中实例方法必须通过对象调用,不能用类名直接调用;需先new创建对象,再以“对象名.方法名()”形式调用,隐式传入this,访问当前对象成员,且不同对象的实例变量互不影响。

在 Java 中,实例方法必须通过对象来调用,不能直接用类名调用(除非是静态方法)。关键点是:先创建对象,再用“对象名.方法名()”的形式调用。
必须通过对象调用,不能用类名直接调用
实例方法属于某个具体对象,它依赖于该对象的状态(即实例变量)。Java 不允许像 MyClass.doSomething() 这样用类名调用实例方法,否则编译报错:non-static method cannot be referenced from a static context。
正确做法是:
- 用 new 类名() 创建对象(例如 Person p = new Person();)
- 再通过对象变量调用方法(例如 p.sayHello();)
调用时隐式传入 this,方法内可访问当前对象的成员
当你写 p.getName(),JVM 实际上把 p 作为 this 传进方法体。因此,在实例方法内部可以直接使用 this.name 或省略 this 直接写 name(前提是存在同名实例变量)。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
例如:
class Dog {
String name = "旺财";
void bark() {
System.out.println(this.name + " 汪汪!"); // this 可省略
}
}
调用 new Dog().bark() 输出 “旺财 汪汪!”。
同一个类的不同对象,调用的是各自独立的方法副本
注意:方法代码只有一份,但每次调用都绑定到特定对象。不同对象的实例变量互不影响。
- Dog d1 = new Dog(); d1.name = "小白";
- Dog d2 = new Dog(); d2.name = "小黑";
- d1.bark() 输出 “小白 汪汪!”
- d2.bark() 输出 “小黑 汪汪!”
静态方法中不能直接调用实例方法
比如 main 方法是 static 的,里面不能写 sayHello(); —— 编译失败。必须显式提供对象:
- 错误:sayHello();
- 正确:Person p = new Person(); p.sayHello();
- 或合并:new Person().sayHello();
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










