Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我能够在java中访问没有对象的方法_Java_Methods - Fatal编程技术网

为什么我能够在java中访问没有对象的方法

为什么我能够在java中访问没有对象的方法,java,methods,Java,Methods,这是我的密码: public class MyProjectPage extends AbstractPage { public boolean addDefaultProjectBymyProjects(String softwareName, String projectName,) { navigateTomyProjects(); } public void navigateTomyProjects() { clickEleme

这是我的密码:

public class MyProjectPage extends AbstractPage {
    public boolean addDefaultProjectBymyProjects(String softwareName, String projectName,) {
        navigateTomyProjects();
    } 

    public void navigateTomyProjects() {
        clickElement(By.xpath(properties.getProperty("x.Myprojects.Icon")), "MyProjects");
    }
}
我能够在没有对象的情况下访问方法
navigateTomyProjects()
;这怎么可能

注意:clickElement是抽象页面中的通用方法

navigateTomyProjects()
是实例方法。
它是从另一个实例方法
addDefaultProjectBymyProjects()
调用的

如果没有对象,则无法访问这些方法;它们被
this
访问,this是将对其执行这些方法的当前实例


这段代码没有什么神秘之处。

方法
navigateTomyProjects()
addDefaultProjectBymyProjects()
都作为实例方法驻留在同一个类中。因此,两个方法中的任何一个都可以访问另一个方法,而无需显式创建类的对象


更准确地说,
addDefaultProjectBymyProjects()
在内部调用
navigateTomyProjects()
作为
this.navigateTomyProjects()
。这里,
this
关键字指的是当前对象(调用对象)。

因此,假设我从main方法调用这个方法navigateTomyProjects,那么它给了我一个错误,main不被视为实例方法吗?@LokeshS、非静态或实例方法不能从静态方法调用
main()
是一个静态方法。因此,假设我从main方法调用这个方法navigateTomyProjects,那么它给了我一个错误,main不能添加这个关键字来调用那个方法?不管main()方法是在同一个类中还是在另一个类中,在Java中,main方法被声明为
public static void main(String[]args)
方法是
静态的
,这意味着它不属于类的任何对象,而是属于类本身。另一方面,其他方法是
实例方法
,而不是
静态方法
。静态方法无法通过创建类的对象访问非静态方法。您能否提供任何参考链接来了解原因难道我们不能从非静态方法中访问静态方法吗?这些是我在谷歌快速搜索中遇到的一些链接。