当前位置:首页 » 编程语言 » java静态调用非静态方法

java静态调用非静态方法

发布时间: 2022-06-17 09:17:23

1. java中如何在静态方法中实现对非静态方法的调用,请问各位有没有具体的例子。

public class A{
//类A中非静态方法

public void func(){ ...... }

//类A中静态方法(主函数)

public static void main(String[] args){
A a=new A();//需实例化A的对象后才可以调用A中非静态方法
a.func();
}

如上面这个简单的例子,静态方法对非静态方法发起调用时,需实例化包含非静态方法的类的对象。如果类A中静态方法需调用类B中非静态方法时,也需实例化B的对象。

原因解释:类中静态的方法或者属性,本质上来讲并不是该类的成员,在java虚拟机装在类的时候,这些静态的东西已经有了对象,它只是在这个类中"寄居",不需要通过类的构造器(构造函数)类实现实例化;而非静态的属性或者方法,在类的装载是并没有存在,需在执行了该类的构造函数后才可依赖该类的实例对象存在。所以在静态方法中调用非静态方法时,编译器会报错(Cannot make a static reference to the non-static method func() from the type A)。

不知这么说你懂了没,如果还有什么不懂可以继续问我。

2. java中带静态方法可不可以调用非静态方法

当然可以,最常见的main调用不就是静态方法调用非静态方法吗

static方法内部不能直接调用非静态方法,
可以在调用之前实例化非静态方法所在的类,再用类点方法来调用。

3. java中静态方法中不能调用非静态方法

静态static方法中不能调用非静态non-static方法是值得是不能直接调用non-static方法
public
class
Test01
{
public
static
void
main(String[]
args)
{
hello();
}
public
void
hello()
{
}
}
是指的这种
在静态的main方法中,直接调用了本类的非静态方法hello(),这种是不允许的

4. JAVA 里既然静态方法无法调用非静态方法,那主方法main 里面,为什么可以通过对像,来调用非静态方法的呢

非静态成员函数在执行前必须先构造并实例化该函数所在的类。
如果允许非静态的main,那么main函数所在的类必须先进行实例化,
那么就需要再写个函数去实例化main所在的类,再调用main,这个实例化代码又写在哪呢?如果它也是非静态的,岂不是又要写个函数去实例化它所在的类嘛?
因此,java语言就规定了main必须是静态的。

5. 关于java的无法从静态上下文中引用非静态 方法

由于tostring()方法是非静态的,故不能直接通过类名引用,上面的这句代码:
system.out.println(course.tostring());
改为
system.out.println(cs.tostring());
即可。
有问题欢迎提问,满意请采纳,谢谢!

6. java 静态方法里面可以调用非静态方法吗

//可以的!
publicclassStaticTest
{
publicstaticvoidmain(String[]args)
{
System.out.println(" 如何实现静态方法调用非静态方法有哪些 ");

//方式1:匿名调用!
newStaticTest().show();

//方式2:创建对象调用!
StaticTestst=newStaticTest();
st.show();

}
//非静态方法!
voidshow()
{
doublep=(double)2.0-(double)1.1;

System.out.println("测试调用:非静态方法show.....!"+p);

}
}

7. java静态方法能调用非静态方法么

当然可以。你可以参考示例。
public class A{
//类A中非静态方法

public void func(){ ...... }

//类A中静态方法(主函数)

public static void main(String[] args){
A a=new A();//需实例化A的对象后才可以调用A中非静态方法
a.func();
}

8. java 静态方法可以调用非静态方法吗

//必须可以!
publicclass非静态方法
{
publicstaticvoidmain(String[]args)
{
System.out.println(" ==========java静态方法可以调用非静态方法吗!========== ");
init();
}
//测试案例,静态方法!
privatestaticvoidinit()
{
//这里调用下面的,看控制台输出!
new非静态方法().show();
//很好调用,创建对象即可!
}
//测试2,非静态方法!
privatevoidshow()
{
System.out.println("show--是非静态方法!");
}
}

9. 在Java中,为什么静态区域的方法不能调用非静态区域的方法

理解起来很简单,因为两者的加载时机不同,静态区的先加载,非静态区的后加载。
具体说:
静态区的方法,在虚拟机加载类文件(.class)的时候,就加载了,而非静态区的方法,是直到有对象被new出来的时候才会加载。
也就是说,如果在非静态区的方法加载之前就调用了它,显然是无法调用到的。所以才会规定静态方法中不能调用非静态的。

10. java主方法如何调用非静态方法

java主方法调用非静态方法的步骤:

  • 1、新建一个类,本例类名“NoStaticMethod”,声明一些成员变量,创建一个主方法main(),一个非静态方法Method_1()。

  • 2、类的全部代码。

** * Created by Administrator on 2016/7/25.

*/

public class NOstaticMethod {

//satement new variable name: studentName

public static String studentName = "xxx";

//satetment new variable nmae: country

public static String country;

//satement new variable name: nation

private static String nation;

//satement new variable name: subject

public String subject = "物理";

//satement new variable name: school

private String school;

//create main method

public static void main(String[] args) {

//NOstaticMethod.Method_1(); 在静态方法main中是不能直接调用非静态方法Method_1的

//只能通过创建类的对象,再由对象去调用成员方法以及成员变量。

NOstaticMethod wangyan = new NOstaticMethod();

//call methol

wangyan.Method_1();

// String physics= subject;在静态方法中也是不能访问非静态成员变量的

//call not static variable

String physics = wangyan.subject;

System.out.println("在主方法main()中只能通过对象来调用非静态成员变量subject:" + physics);

}

//create new method name: Method_1()

public void Method_1() {

System.out.println("Method_1是一个公共的、非静态的方法");

System.out.println("在非静态方法Method_1中访问静态成员变量“学生姓名”(studentName):" + studentName);

System.out.println("在method_1中直接调用非静态成员变量subject:" + subject);

}

  • 3、运行结果

Method_1是一个公共的、非静态的方法

在非静态方法Method_1中访问静态成员变量“学生姓名”(studentName)

在method_1中直接调用非静态成员变量subject(科目)

在主方法main()中只能通过对象来调用非静态成员变量subject

  • 4、分析代码

public static void main(String[] args) {

//NOstaticMethod.Method_1(); 在静态方法main中是不能直接调用非静态方法Method_1的

//只能通过创建类的对象,再由对象去调用成员方法以及成员变量。

NOstaticMethod wangyan = new NOstaticMethod();

//call methol

wangyan.Method_1();

// String physics= subject; 在静态方法中也是不能访问非静态成员变量的

//call not static variable

String physics = wangyan.subject;

System.out.println("在主方法main()中只能通过对象来调用非静态成员变量subject:" + physics);

}

热点内容
津贴脚本 发布:2025-02-06 19:44:10 浏览:739
好分数里如何修改密码 发布:2025-02-06 19:42:30 浏览:155
mysql存储过程判断 发布:2025-02-06 19:40:15 浏览:853
bat编译器的作用 发布:2025-02-06 19:26:54 浏览:343
phpajaxsession 发布:2025-02-06 19:20:56 浏览:623
西安java学习 发布:2025-02-06 19:15:44 浏览:623
微信电影源码网站 发布:2025-02-06 18:55:21 浏览:934
本地建mysql数据库 发布:2025-02-06 18:54:23 浏览:762
屏幕看不清了如何输密码 发布:2025-02-06 18:51:14 浏览:333
手机开脚本买个什么配置的 发布:2025-02-06 18:45:59 浏览:113