「java非静态函数」非静态函数调用静态函数

博主:adminadmin 2023-01-18 11:09:05 324

今天给各位分享java非静态函数的知识,其中也会对非静态函数调用静态函数进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java 类为什么不能调用非静态函数

满意答案 热心问友 2011-01-20谁说不能调用的呢?静态函数内的确是不能调用非静态函数的。但是静态函数可以调用静态函数以及静态成员 追问: 我说的是,在不声明对象的前提下,直接用类调用静态函数 回答: 可以调用呀。但是有访问权限的限制呢。你检查一下你的函数访问权限 补充: 用java类名调用静态函数可以,调用非静态函数不行。 追问: 呵呵,不好意思,在不声明对象的前提下,可以直接用类调用静态函数,不能调用非静态函数 回答: 静态函数是类相关的,非静态函数是对象相关的,静态函数随类的初始化而初始化,就是说类被加载到内存中的方法区后,该静态方法也被分配到内存中,所以可以直接调用,而非静态方法是对象相关的,当类被实例化后(创建了该类的实例),该非静态方法才被分配内存(加载到内存的方法区中),必须对象调用才行。

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

静态方法和实例方法的区别主要体现在两个方面:\x0d\x0a\x0d\x0a在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。\x0d\x0a\x0d\x0a静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。\x0d\x0a\x0d\x0a下面几个例子展示了这一区别。\x0d\x0a\x0d\x0a1、调用静态方法示例。\x0d\x0a\x0d\x0a//-----------文件名hasStaticMethod.java,程序编号1-----------------public class hasStaticMethod{//定义一个静态方法public static void callMe(){System.out.println("This is a static method.");}}\x0d\x0a \x0d\x0a下面这个程序使用两种形式来调用静态方法。\x0d\x0a//-----------文件名invokeStaticMethod.java,2-----------------public class invokeStaticMethod{public static void main(String args[]){hasStaticMethod.callMe(); //不创建对象,直接调用静态方法 hasStaticMethod oa = new hasStaticMethod(); //创建一个对象oa.callMe(); //利用对象来调用静态方法}} \x0d\x0a程序3.36两次调用静态方法,都是允许的,程序的输出如下:\x0d\x0aThis is a static method.This is a static method. \x0d\x0a\x0d\x0a允许不创建对象而调用静态方法,是Java为了减少程序员调用某些常用方法时的麻烦,而允许程序员按照传统的C语言中使用函数的方式来使用方法。典型的例子是前面某些程序中使用"Math.ramdon()"来获取随机数。\x0d\x0a\x0d\x0a2、静态方法访问成员变量示例。\x0d\x0a\x0d\x0a//-----------文件名accessMember.java,程序编号3.37-----------------class accessMember{private static int sa; //定义一个静态成员变量private int ia; //定义一个实例成员变量//下面定义一个静态方法static void statMethod(){int i = 0; //正确,可以有自己的局部变量sa = 10; //正确,静态方法可以使用静态变量otherStat(); //正确,可以调用静态方法ia = 20; //错误,不能使用实例变量insMethod(); //错误,不能调用实例方法}static void otherStat(){} //下面定义一个实例方法 void insMethod(){int i = 0; //正确,可以有自己的局部变量sa = 15; //正确,可以使用静态变量ia = 30; //正确,可以使用实例变量statMethod(); //正确,可以调用静态方法}} \x0d\x0a\x0d\x0a本例其实可以概括成一句话:静态方法只能访问静态成员,实例方法可以访问静态和实例成员。之所以不允许静态方法访问实例成员变量,是因为实例成员变量是属于某个对象的,而静态方法在执行时,并不一定存在对象。同样,因为实例方法可以访问实例成员变量,如果允许静态方法调用实例方法,将间接地允许它使用实例成员变量,所以它也不能调用实例方法。基于同样的道理,静态方法中也不能使用关键字this。\x0d\x0a\x0d\x0amain()方法是一个典型的静态方法,它同样遵循一般静态方法的规则,所以它可以由系统在创建对象之前就调用。

java中main方法里面调用非静态方法。

静态方法只能直接访问静态成员,无法访问非静态成员,如果想要访问非静态方法,则实例化该类对象,使用对象名.非静态方法()的方式来访问!

static是一种访问修饰符,在java中可以修饰代码块、方法和属性

1、静态块:用于在类加载之前完成一些初始化操作,仅会执行一次

2、静态方法:可以使用类名和对象调用,只能直接访问静态成员,无法访问非静态成员

3、静态属性:可以使用类名和对象名调用,多个对象共享

java非静态函数的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于非静态函数调用静态函数、java非静态函数的信息别忘了在本站进行查找喔。