为什么java中public的方法不能被调用而static可以?

如题所述

你的方法是在一个类里面的,要调用需要实例化对象,再通过对象调用方法,而static是静态意思,所以方法生成不受类实例影响,直接初始化,就可以直接调用了,简单理解就是,方法在类里面必须要先new一下生成这类,里面的方法才会激活,这样才能调用,static修饰后代码会先运行静态修饰的,所以方法就已经提前激活了,你就可以直接调用追问

追答

怎么?

追问

没有错误但也运行不出来

追答

只打印30?

追问

你那边看得清楚吗?

追答

对啊,你的代码写的没问题,本来你就只打印了他们俩相加

追问

追答

那有什么问题

追问

不是啊,两个方法一个想加一个相乘

应该是30
200

追答

你的代码是这样做了,但你没有打印啊

追问

追答

你写的方法只负责计算,没有实现打印的,你自己写上就是

追问

对了

感谢

追答

你是初学者吧

追问

我只学过c语言

追答

那这个简单逻辑应该还是能懂啊

追问

但上面的return为什么也打印出来了?

print 方法

追答

不是啊,那是你system.out.print(a+b)才是打印语句,而不是你print方法打印的

追问

哦,看漏了这个

😓

追答

所以你把自己给迷惑了

追问

那return 后面的东西要怎么写才能打印出来

我记得c语言好像可以这么直接打印的

追答

怎么会,c语言打印还复杂一点,需要申明打印的类型,比如还要%d,取缔符变量,java直接打印

追问

System.out.println("f.ml(a,b)");

这个好像不行

追答

你方法返回的是空,所以会报错

你方法和以前一样不变

retun a*b

追问

追答

按你的写法,不要这句System.out.println("f.ml(a,b)");也是可以的

追问

我懂了

下面的忘了改了

追答

追问

感谢啊

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-09-13
因为你调用方法是在main方法中调用的,main方法是静态的,静态方法调用静态的,不能直接调用非静态的,想要调用非静态的方法只能先new一个对象再调用,你把pubic 去掉一样不能调用这和public没关,而是和static有关系追问

怎么搞吗?

但还是运行不出来

怎么图片都不清楚啊

将就看一下

相似回答