php静态方法调用非静态方法,为什么不能从静态的方法里面调用非静态方法,或变量?

用户投稿 91 0

关于“php_调用非静态方法”的问题,小编就整理了【4】个相关介绍“php_调用非静态方法”的解答:

为什么不能从静态的方法里面调用非静态方法,或变量?

静态方法是不需要初始化就可以调用的,例如Student类有一个静态方法study,可以Student.study,而不需要实例化一个Student对象。

但是非静态的全局变量是需要实例化一个对象后,该变量和实例化的那个对象绑定在一起才能够使用,所以就产生了矛盾,如果静态方法去调用非静态的变量,那么该变量可能还没有被实例化,所以是不能够调用的。

非静态方法可以调用静态方法与变量吗?

No不对应该是:静态方法中不能引用非静态方法——理由很简单,因为静态方法直接可以不经过实例化就可以使用。但是非静态方法必须借助一个实例才能使用。静态方法中用非静态变量,那么这变量“没有实例化”就不能被直接使用的。矛盾。

静态方法和非静态方法的区别是什么?

区别:一、调用对象、引用变量不同;二、调用方法不同;三、生命周期不同。

方法主要分为三种:1.构造方法;2.非静态方法(普通方法/实例方法);3.静态方法(类方法)。

静态方法和非静态方法的区别在于它们与类的实例化有关。

明确结论:静态方法和非静态方法的区别是,静态方法不需要实例化类就可以使用,而非静态方法需要实例化类才能使用。

解释原因:静态方法属于类方法,只要类加载完成,就可以直接通过类名调用;而非静态方法属于实例方法,需要先创建对象,才能通过对象调用。

内容延伸:使用静态方法的好处在于,可以直接通过类名调用,不需要创建实例,便于代码的调用和管理;而非静态方法则是面向对象编程的核心,可以对不同的对象进行不同的操作。

在使用时需要根据实际情况选择适合的方法类型。

静态方法与非静态方法的区别?

静态方法static(类方法)和 非静态方法(实例方法)的区别:

一、调用对象、引用变量不同;

二、调用方法不同;

三、生命周期不同。方法主要分为三种:

1.构造方法;

2.非静态方法(普通方法/实例方法);

3.静态方法(类方法)。

静态方法在创建对象前就可以使用了,非静态方法必须通过new出来的对象调用。

如:

public class Per{

public static String getType(){

return "人类";

}

public String getName(){

return "张三";

}

}

上面这个类中的getType方法,在没有new对象前这就可以这样用:

String type=Per.getType();//type="人类";

而getName方法则不能这样使用,编译都不会通过

getName必须这样:

Per p=new Per();

String name=p.getName();//name="张三";

当然,getType方法也可能通过对象调用:

String type=p.getType();//type="人类";

综上所述:

静态方法是在创建实例之前就存在了,而非静态方法是在创建对象之后才有的。 

到此,以上就是小编对于“php_调用非静态方法”的问题就介绍到这了,希望介绍关于“php_调用非静态方法”的【4】点解答对大家有用。

抱歉,评论功能暂时关闭!