同学你好,同学的理解是正确的。
1.静态方法调用时,可以使用对象,但是不推荐这么使用,甚至很多代码工具都会提示警告。静态方法通常通过类名来访问。
例如我们常用的主方法,其实就是典型的静态方法,如下代码所示:
public class Test {
public static void main(String[] args) {
//通过对象调用(不建议这样使用)
Person person = new Person();
person.method();
//通过类名调用(推荐的使用方法)
Person.method();
}
}
class Person{
public static void method() {
System.out.println("I'm static method~");
}
}
上面的method方法,可以通过对象调用,也可以通过类名直接调用。
2.非静态方法如果在本来之外被调用时,任何情况下都必须先创建对象。如下代码所示:
public class Test {
public static void main(String[] args) {
// 在静态方法中调用:通过对象调用
Person person = new Person();
person.method();
}
public void test() {
// 在非静态方法中调用:通过对象调用
Person person = new Person();
person.method();
}
}
class Person {
public void method() {
System.out.println("I'm static method~");
}
}
3.特殊的,非静态方法在本类中被调用时,可以不创建自身对象,因为默认对象为当前对象,即this。而在Java中,本类中是可以省略this的。如下代码所示:
class Person {
public void method() {
System.out.println("I'm static method~");
}
public void test() {
//可以不创建对象,直接调用方法(不建议的写法)
method();
//默认系统会添加this,但是建议手动写入this,提高代码可读性(推荐的写法)
this.method();
}
}
4.同第3点,当静态方法在本类中使用时,也是可以省略类名的,但是此时不建议写入this。如下代码所示:
class Person {
public static void method() {
System.out.println("I'm static method~");
}
//静态方法用于非静态方法
public void test() {
//可以省略类名,直接调用方法(不建议的写法)
method();
//可以使用this来调用方法(不建议的写法)
this.method();
//通过类名调用方法(推荐的写法)
Person.method();
}
//静态方法用于静态方法
public static void test1() {
//可以省略类名,直接调用方法(不建议的写法)
method();
//此处编译错误,因为在静态方法中不存在当前对象,即不能使用this
this.method();
//通过类名调用方法(推荐的写法)
Person.method();
}
}
如果同学依然有疑问,欢迎继续提问。
祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星