如何引用其它包中的非静态方法不能使用super引用

15:07 提问
无法从类型请求中对非静态方法getParameter(String)进行静态引用
我看和老师代码一样的啊,不知道怎么报错说Cannot make a static reference to the non-static method getParameter(String) from the type Request(无法从类型请求中对非静态方法getParameter(String)进行静态引用)
按赞数排序
找到问题了 request必须小写
第一:创建个users对象,然后调用getUserName()方法
第二:将getUserName()方法改为静态方法,在其方法定义的前面加上static关键字
不应该是Request,而应该是request
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
如上是经典的Fobonacci递归算法:
public class Fibonacci
public static void main(String []args)
int x = f(6);
System.out.println(x);
public int f(int x)
if(x==1||x==2)
如图所示,分别在第5行与第10行删除了static,则程序报错。
非静态常量是随着对象实例化才分配内存赋值的,运行main时只加载了类,内存中还没有变量值,而类加载时首先为static成员分配空间并被初始化为0。
简而言之,static修饰的属性和方法在雷初始化时加载,非静态属性和方法在对象初始化时加载。
Java中非静态方法可以直接引用静态方法(变量)以及非静态方法(变量),静态方法也可以直接引用静态方法(变量),但是静态方法不能直接引用非静态方法(变量),需要先定义一个非静态方法(变量)的对象,然后用对象来引用该非静态方法(变量)。
* java中包含主函数的类必须是公共类,一个文件中只能
* 有一个公共类,并且公共类名必须要和文件名相同
java初学者经常会遇到的问题:无法从静态上下文中引用非静态变量
non-static variable mainframe cannot be referenced from a static context
即在静态方法中不能引用非静态变量
因为我们知道静态的方法可以在没有创建实例时使用,而申明为非静态的成员变量是一个对象属性,它只有在对象存在时引用,因此如果在对
静态方法和静态变量是属于某一个类,而不属于类的对象。
因为我们知道静态的方法可以在没有创建实例时使用,而申明为非静态的成员变量是一个对象属性,它只有在对象存在时引用,因此如果在对象未创建实例时我们在静态方法中调用了非静态成员方法自然是非法的,所以编译器会在这种时候给出错误。
简单说来,静态方法可以不用创建对象就调用,非静态方法必须有了对象的实例才能调用.因此想在静态方法
import java.util.S
public class xuefenjidian
double kcxfjd(double cj,int xuefen)
if(cj&=60)
kcjd = (cj - 50)/10;
构造函数的函数名得和类名一致.
构造函数给对象初始化,构造函数被对象在用
构造函数区分通过参数列表 (构造函数的函数名得和类名一致.)
paramTest中这段程序正常中,中间遇到三个问题:
1、对于声明或声明且赋值可以写在非块中,其它都要写到块中才可以(原因是因为自己不小心将大括号弄到这个块的中间了)
2、写的内部类是动态的,也就是开头以public class开头。而主程序是public static class main。在Java中,类中的静态方法不能直接调用动态方法。只有将某个内部类修饰为静态类,然后才能够在静态
编译出现:
rray_test1.java:15: 错误: 无法从静态上下文中引用非静态 方法 arrayset()解决方法:
子方法 private void arrayset()
private static void arrayset()程序最终都将在内存中执行,变量只有在内存中占有一席之地时才能被访问。类的静态成员(变量和方法)属于类本身,在类加载的时候就会分配内存,可以通过类名直接去访问;非静态成员(变量和方法)属于类的对象,所以只有在类的对象产生(创建类的实例)时才会分配内存,然后通过类的对象(实例)去访问。在一个类的静态成员中去访问其非静态成员之所以会出错是因为在类的非静态成员不存在的时候类的静态成员就已经存在了,访问一个内存中不存在的东西当然会出错:而类又是在什么时候加载的呢?
由引导类加载器负责加载的核心类比如 String 类在 JVM 启动时(main 方法开始执行前)就会被加载,其它类在使用前(new 它对象或调用其静态方法访问静态域等等前)会被动态加载,要注意的是子类被加载前它的所有超类要根据由父到子的顺序被逐一加载。class A1{
public static int a=5;}class B1 extends A1{
public static int a=8;
void print(){
System.out.println(super.a);
System.out.println(a);
}}public class TestStatic{
public static void main(String args[])
System.out.println("b.a="+B1.a);
System.out.println("b.a="+A1.a);
new B1().print();
}}就这段代码说一下.就你上面的代码说一下: 当你在doc环境下输入: java TestStatic时, 虚拟机会先加载TestStatic类,此时虚拟机会先看看TestStatic类有没有静态的字段, 没有,直接执行main方法。 main方法中第一句代码是打印B1.a, 虚拟机便会去找类B1,找到类B1时,虚拟机发现B1的父亲是A1, 于是父亲优先,先加载A1, 同样,在加载A1时,会看看A1中有什么静态的东西,有, static int a = 5; a是静态的,先加载,当把静态的字段加载完后,一个类就算加载完了, 所以A1已经加载完毕,以后不用在加载了。 父亲加载完了,轮到B1了,同样先看看里面有什么静态的字段,有, static int a = 8; 此时B1也加载完毕了。 第一条打印语句到此时也执行完毕了, 轮到第二条打印语句了。 当执行new B1().print();这句时, 会发生动态绑定, 此时会有一个代表B1对象的this对象传递给print()方法, 所以print()方法中的 System.out.println(a); 其实是, System.out.println(this.a); 会打印出一个8出来。 至于super.a就简单了, 打印父类中的a, 结果是5. 到此,main()方法执行完,整个程序退出。
为什么静态方法不能调用非静态的变量和方法
你想一下嘛
因为静态是随着累的加载而加载的
也就是说类只要存在了,那么静态就存在了,而静态是优先于对象存在的
,你要访问非静态的东西,也就是非静态的成员(包括变量和方法),非静态的东西还没存在你...
不能对非静态字段/方法进行静态引用
如图所示,分别在第5行与第10行删除了static,则程序报错。
非静态常量是随着对象实例化才分配内存赋值的,运行main时只加载了类,内存中还没有变量值,而类加载时首先为static成员分配...
关于java静态方法里只能调用静态变量的思考
最近一段时间里面写了这样一个类:
public class DBManager {
private static MySqliteH
public st...
关于静态函数只能调用静态变量
有次面试的时候被問到,说为什么静态函数只能调用静态变量,我一下懞了,平时只知道这样記着,所以也只能老实回答。面试完后补习了下这块的知识。
推荐一篇很好的文章,关于C++中的this指针的:http:...
静态方法不能调用非静态方法的原因
静态方法是属于类的,即静态方法是随着类的加载而加载的,在加载类时,程序就会为静态方法分配内存,而非静态方法是属于对象的,对象是在类加载之后创建的,也就是说静态方法先于对象存在,当你创建一个对象时,程序...
最近做下题时我感觉应该选a,但答案是c,不是说静态方法只能调动静态方法的吗?--------------------------------------------------------------...
静态方法里面的变量都是静态的,这样的说法并不正确,只能说静态方法只能引用静态成员变量,它的内部可以定义非静态的变量
静态方法调用的三种方式:1、new xx().静态();
//使用对象调用,不推荐2、xx.静态(); //类名调用,正规调用方法,推荐3、静态(); //本类的静态方法在本类调用,直接调用欢迎各位...
static是类级别方法 也就是可以 类名.方法调用 不加static是实例级别的 也就是必须 先有实例(对象) 才能调用其方法如new A().test()
不行,因为java中静态的东西是...
程序最终都将在内存中执行,变量只有在内存中占有一席之地时才能被访问。
类的静态成员(变量和方法)属于类本身,在类加载的时候就会分配内存,可以通过类名直接去访问;非静态成员(变量和方法)属于类的对...
没有更多推荐了,static-无法从静态上下文中引用非静态 方法问题怎么解决?
作者:用户
浏览:903 次
无法从静态上下文中引用非静态方法问题怎么解决?10C以下代码老是提示Error:(6836)错误:无法从静态上下文中引用非静态方法getImage(String),怎么解决?publicclassIm
无法从静态上下文中引用非静态 方法问题怎么解决?
以下代码老是提示Error:(68 36) 错误: 无法从静态上下文中引用非静态 方法 getImage(String),怎么解决?public class ImageService {
// 获取网络图片的数据
public static byte[] getImage(String picturepath) throws Exception {
URL url = new URL(picturepath);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();// 基于http协议的连接对象
conn.setConnectTimeout(10);// 10秒;
conn.setRequestMethod(""GET"");// 大写
if (conn.getResponseCode() == 200) {
InputStream ins = conn.getInputStream();
return StreamTool.read(ins);
代码只有这么多么?根据错误提示,你在静态方法中调用了非静态的成员,你需要先实例化。代码片段本身看不出问题。
解决方案二:
代码提示Error:(68 36)这个行数,你检查一下,是不是其它地方还定义了getImage,是一个非静态的函数。只有这么解释了。这段代码本身没有问题的。
【云栖快讯】诚邀你用自己的技术能力来用心回答每一个问题,通过回答传承技术知识、经验、心得,问答专家期待你加入!&&
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率
40+云计算产品,6个月免费体验
稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一
云服务器9.9元/月,大学必备为什么静态方法不能调用非静态变量,非静态方法可以引用静态变量?
理由很简单,静态方法不属于对象,是属于类的,是不需要实例化的,而非静态变量是属于对象的,需要先实例化。在一个类的静态成员中去访问其非静态成员之所以会出错是因为在类的非静态成员不存在的时候类的静态成员就已经存在了,访问一个内存中不存在的东西当然会出错。
相反,非静态方法是可以引用静态变量的。
因为静态变量是存储在静态内存单元内,可以直接用类进行调用,也可以用实例化的对象对其引用。所以非静态方法是可以引用静态变量的。
只有一种情况下 会定义static方法 就是在一个类中没有任何成员变量(属性)的时候,定义static方法
静态方法不能调用非静态方法的原因
静态方法是属于类的,即静态方法是随着类的加载而加载的,在加载类时,程序就会为静态方法分配内存,而非静态方法是属于对象的,对象是在类加载之后创建的,也就是说静态方法先于对象存在,当你创建一个对象时,程序...
静态方法中不能使用非静态变量
静态方法中不能使用非静态变量main class:PeopleProgram name:People.java---------------------------------------------...
为什么静态方法不能调用非静态的变量和方法
你想一下嘛
因为静态是随着累的加载而加载的
也就是说类只要存在了,那么静态就存在了,而静态是优先于对象存在的
,你要访问非静态的东西,也就是非静态的成员(包括变量和方法),非静态的东西还没存在你...
java中静态方法调用非静态成员变量、非静态方法
public class Circle {
private double radius = 1.0;
double getAre() {
return radius * radi...
为什么不能从静态的方法里面调用非静态方法,或变量?
程序最终都将在内存中执行,变量只有在内存中占有一席之地时才能被访问。类的静态成员(变量和方法)属于类本身,在类加载的时候就会分配内存,可以通过类名直接去访问;非静态成员(变量和方法)属于类的对象,所以...
静态方法里不能调用非静态变量
/*静态:static用法:是一个修饰符;用于修饰成员(成员变量和成员函数)当成员被静态修饰后,就多了一种调用方式,除了可以被对象调用外,还可以直接被类名调用格式:类名.静态成员静态的特点:1.随着类...
为什么不能从静态的方法里面调用非静态方法,或变量?
静态方法不能调用非静态的属性和方法,非静态方法可以调用静态的方法和属性,也可以调用非静态的方法和属性...
Java中非静态方法可以直接引用静态方法(变量)以及非静态方法(变量),静态方法也可以直接引用静态方法(变量),但是静态方法不能直接引用非静态方法(变量),需要先定义一个非静态方法(变量)的对象,然后...
为什么不能从静态的方法里调用非静态的方法或变量
程序最终都将在内存中执行,变量只有在内存中占有一席之地时才能被访问。
类的静态成员(变量和方法)属于类本身,在类加载的时候就会分配内存,可以通过类名直接去访问;非静态成员(变量和方法)属于类的对象,所...
没有更多推荐了,c#静态方法和非静态方法详细介绍
&更新时间:日 16:34:07 & 作者:
这篇文章主要介绍了c#静态方法和非静态方法,需要的朋友可以参考下
C#的类中可以包含两种方法:静态方法和非静态方法。 使用了static 修饰符的方法为静态方法,反之则是非静态方法。 静态方法是一种 特殊的成员方法,它不属于类的某一个具体的实例,而是属于类本身。所以对静态方法不需要 首先创建一个类的实例,而是采用类名.静态方法的格式 。1.static方法是类中的一个成员方法,属于整个类,即不用创建任何对象也可以直接调用!static内部只能出现static变量和其他static方法!而且static方法中还不能使用this....等关键字..因为它是 属于整个类! 2.静态方法效率上要比实例化高,静态方法的缺点是不自动进行销毁,而实例化的则可以做销毁。 3.静态方法和静态变量创建后始终使用同一块内存,而使用实例的方式会创建多个内存. 4.C#中的方法有两种:实例方法,静态方法. 类的方法代码只有一份,它们的生命周期和类是一致的.实例方法是通过对象名调用的,静态方法与类关联而不是 与对象名关联. 5.那么在程序中什么地方可以利用静态字段和静态构造方法,通常适用于于一些不会经常变化而又频繁使用的数 据,比如连接字符串,配置信息等,当满足上面所 说的两点时,进行一次读取,以后就可以方便的使用了,同 时也节约了托管资源,因为对于静态成员,一个静态字段只标识一个存储位置。对一个类无论创建了多少 个实 例,它的静态字段永远都只有一个副本(副本我理解为只有一块内存 静态成员存在于内存,非静态成员需要实例化才会分配内存,所以静态成员不能访问非静态的成员..因为静态成员 存在于内存,所以非静态成员可以直接访问类中静态的成员. 公用的处理函数,使用静态方法应该没有问题..牵涉 到数据共享,静态变量的函数要多考虑...静态变量要小心使用.. 静态方法 原理就是共享代码段 共享代码段不会产生任何问题 因为代码段都是给CPU作为"读取"用的,除非你进行恶意"修改"运行时的代码段 所以静态方法是可以放心使用的 静态变量 原理就是共享数据段 同上 只要没有进行"写入"操作就不会产生问题 但是数据通常都是用于读和写 所以静态变量要注意使用 下面是一个使用静态方法的例子
代码如下:class Class1 { [STAThread]static void Main(string[] args) { int i = MyClass.Add(3,5); //调用静态方法 Console.WriteLine(i); } } class MyClass {public static int Add(int x,int y ) { return x +} }
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具

我要回帖

更多关于 静态方法不能使用super引用 的文章

 

随机推荐