首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
软件与程序人生
›
后端开发
›
Java
›
关于Non-static method xx cannot be referenced from a ...
返回列表
发新帖
关于Non-static method xx cannot be referenced from a static context的
[复制链接]
发表于 2022-9-16 15:23:56
|
显示全部楼层
|
阅读模式
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
关于static method的解释
想要解决上面的报错,我们首先需要了解什么叫做static method(静态方法)。
静态方法为类所有,一般情况下我们通过类来使用(而对于不加static的实例方法我们则只能通过对象的来调用)。
以下我们通过一些
代码
的例子来对此进行说明:
在同一类里面调用静态方法与实例方法的区别:
点击查看
代码
public class Main{
public static viod main(String[] args){
//Test01();//直接调用Test01会报Non-static method xx cannot be referenced from a static context.
//用如下方式调用Test01
Main m=new Main();
m.Test01();
//Test02可以直接调用,通过类
Main.Test02();
}
public viod Test01(){
System.out.println("此方法为非静态方法")
}
public static viod Test02(){
System.out.println("此方法为静态方法")
}
}
复制
代码
通过上面的代码不难看出我们的**main()方法是静态的**,如果要在 main() 方法中调用本类中的其他方法,则该方法也必须是静态的,否则需要先创建本类的实例对象,然后再通过对象调用该成员方法。
在不同类里面调用静态方法与实例方法的区别:
点击查看代码
public class Main{
public static viod main(String[] args){
TestNonStatic.Test01();//会报错,不能直接引用其他类的非静态方法
TestNonStatic testnonstatic=new TestNonStatic();
TestNonStatic.Test01;//依然可以通过创建一个实体对象来访问。
TestNonStatic.Test02();
}
}
class TestNonStatic{
viod Test01(){
System.out.println("其他类中的实例方法")
}
static void Test02(){
System.out.printlin("其他类中的静态方法")
}
}
复制代码
通过以上代码不难看出静态方法与实例方法的主要区别在于是否需要创建一个对象来引用所对应的方法。只要满足封装的条件在同一类或者不同类均不影响调用。(从内存模型上来讲,我们的静态成员是处于堆中的,已经被分配了内存,所以我们可以直接对其进行调用。而非静态成员是没有被分配内存的,只有当他们被对象化,实例化才能被我们调用)。
回复
使用道具
举报
返回列表
浏览过的版块
物联网
公有云
分布式数据库
信创/国产替代
网络安全
数据仓库与分析
SAAS
Mysql
程序人生
王海鱼
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表