gpt4 book ai didi

java - 类的实例

转载 作者:行者123 更新时间:2023-12-01 23:01:53 24 4
gpt4 key购买 nike

非静态方法是否会创建声明它的类的实例?如果不是,为什么这段代码有效?

import java.awt.*;

public class Main extends Frame {
public Main () {
//super keyword needs an istance of the class don't it?
super ("My frame");
super.setSize (200,100);
}

public static void main (String [ ] args) {
new Main();
}
}

如果非静态方法创建类的实例,则下一个代码应该可以工作...

import.java.applet.*;

public class Main extends Applet {
public void print () {
System.out.println ("Hi");
}

public void init () {
this.print();
}
}

最佳答案

非静态方法只能在已经存在的实例上下文中访问

public class Foo {  
public static void someStaticMethod() { /* ... */ }

public void someNonStaticMethod() { /* ... */ }
}

其他地方:

Foo.someStaticMethod(); // this works
Foo.someNonStaticMethod(); // this DOESN'T work

Foo foo = new Foo();
foo.someNonStaticMethod(); // but this does

在非静态方法中,您可以默认(隐式)访问实例,也可以使用 this 关键字显式引用它。在您的示例中:

public class Main extends Frame {
public Main () {
//super keyword needs an istance of the class don't it?
super ("My frame");
super.setSize (200,100);
}

public static void main (String [ ] args) {
new Main();
}
}

...调用 super 时所讨论的实例是您使用 new Main() 创建的隐式实例。

关于java - 类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23302396/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com