什么是Java语言中所说的非静态方法,它和静态方法有何区别?

来源:百度知道 编辑:UC知道 时间:2024/07/07 09:44:24

非静态方法是相对于静态方法来说的。静态方法使用static关键字来标示,非静态方法没有此关键字。
他们之间最大的区别在于它们生命周期的不同,静态方法属于全局方法,当静态方法第一次被访问的时候,就将常驻内存直到整个系统被销毁;而非静态方法则与类有关,只有该方法所在的类被实例化之后,该方法才能被访问,类被销毁的同时方法也被销毁。生命周期的不同决定了它们的调用方式的不同,静态方法使用(类名.方法名)来调用,而非静态方法则需要(new 类名().方法名)来调用。
同时与之相关的就是,静态方法不能调用非静态方法和属性。在了解了它们生命周期的不同后,这一点也比较好理解,因为静态方法生命周期比非静态方法和属性长,当调用非静态方法和属性时就会产生非静态方法和属性已经被销毁的情况导致程序出错。

使用static关键字的方法就是静态方法。

静态方法可以直接使用“类名.方法名”的方式来调用,而非静态方法就必须先声明类,然后用类的对象去调用方法。
例如:
类名 aaa = new 类名();
aaa.方法名();
这样才能调用。

带有static表示符的方法就是静态方法,静态方法是类级
别的,可以通过类名直接进行访问,而无需通过对象对
其进行访问,静态方法是不会被子类继承的。

静态方法通过类名调用,不是静态通过对象调用.

没有用static 关键字修饰的方法就是非静态方法。
非静态方法只能用类的对象来调用,而静态方法可以用类的对象来调用,也可以直接用类名调用。因为在生成类的字节码文件时,静态方法就已经存在了,它为类的所有对象所共有。静态方法和静态变量随类的产生而产生,随类的消亡而消亡。

楼上说的很好哦 顶个