错误:无法从静态上下文中访问非静态方法?为什么?
classPoint{publicdoublex;publicdoubley;Point(){x=3;y=7;}Point(doublex,doubley){this.x...
class Point
{
public double x;
public double y;
Point()
{
x=3;
y=7;
}
Point(double x,double y)
{
this.x=x;
this.y=y;
}
void show()
{
System.out.println(x+y);
}
Point getMiddle(Point p1,Point p2)
{
Point p = new Point((p1.x+p2.x)/2,(p1.y+p2.y)/2);
return p;
}
}
public class H
{
public void main(String[] args)
{
Point p1 = new Point();
Point p2 = new Point(6.0,8.0);
Point p=Point.getMiddle(p1,p2);
p1.show();
p2.show();
p.show();
}
} 展开
{
public double x;
public double y;
Point()
{
x=3;
y=7;
}
Point(double x,double y)
{
this.x=x;
this.y=y;
}
void show()
{
System.out.println(x+y);
}
Point getMiddle(Point p1,Point p2)
{
Point p = new Point((p1.x+p2.x)/2,(p1.y+p2.y)/2);
return p;
}
}
public class H
{
public void main(String[] args)
{
Point p1 = new Point();
Point p2 = new Point(6.0,8.0);
Point p=Point.getMiddle(p1,p2);
p1.show();
p2.show();
p.show();
}
} 展开
展开全部
用static修饰的方法称为静态方法,修饰变量则为静态变量,又分别叫做类方法或者类变量。
静态方法中不能直接调用非静态方法。因为非静态方法不是独立存在的,它是依附于对象存在——即只有申明了对象,才能通过对象调用。而静态方法则可以直接通过类名调用,而不需要申明对象。因此直接引用非静态方法就会出错。
比如常见的main方法都是静态的,必须由static修饰,因此在main方法里调用类的其他非静态方法,都是需要先申明对象,才能用。否则就会出现引用非静态方法的错误。
要解决这个问题,可以去除一般方法的static关键字(如果是main方法,则不能去掉static)。另外一种方法就是把需要引用的方法也设置成静态方法。
求采纳为满意回答。
静态方法中不能直接调用非静态方法。因为非静态方法不是独立存在的,它是依附于对象存在——即只有申明了对象,才能通过对象调用。而静态方法则可以直接通过类名调用,而不需要申明对象。因此直接引用非静态方法就会出错。
比如常见的main方法都是静态的,必须由static修饰,因此在main方法里调用类的其他非静态方法,都是需要先申明对象,才能用。否则就会出现引用非静态方法的错误。
要解决这个问题,可以去除一般方法的static关键字(如果是main方法,则不能去掉static)。另外一种方法就是把需要引用的方法也设置成静态方法。
求采纳为满意回答。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
Storm代理
2023-07-25 广告
2023-07-25 广告
StormProxies是一家提供动态代理服务器服务的企业,旨在帮助用户更好地管理网络访问和安全。以下是一些关于StormProxies的IP动态代理服务的特点:1. 高匿名性:StormProxies的动态代理服务器具有高匿名性,可以有效...
点击进入详情页
本回答由Storm代理提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询