初学java,静态方法这边有些疑惑。
class Circle{
double r;
public Circle(double r){
this.r=r;
}
public double area(){
return Math.PI*r*r;
}
public static double area(double r){ //1.主函数能引用这个静态方法吗?
return Math.PI*r*r;
}
public static double area(Circle c){
return Math.PI*c.r*c.r;
}
}
public class ex_6{
public static void main(String[] args){
Circle c1 = new Circle(2);
System.out.println(c1.area()); //
System.out.println(Circle.area(2.5));
System.out.println(Circle.area(c1));
}
}
public static double area(double r){
return Math.PI*r*r;
}
这个静态方法能够被主函数引用吗?为什么?
System.out.println(c1.area()); //
System.out.println(Circle.area(2.5));
System.out.println(Circle.area(c1));
这三次调用不用方法,第一个必须是实例吗?另外第二个和第三个调用为什么是Circle。area()?Circle是不是声明类啊?
小白问题求解,谢谢!!!
第一个
c1.area()
调用的是实例方法后面两个调用的都是静态方法。
你的
main
是定义在类ex_6
中的,要去访问Circle
的静态方法当然要指明是哪个类啊,所以会Circle.area(...)
如果你在
ex_6
中定义一个静态方法,在main
中调用就不需要前缀类名了,当然如果前缀了类名也是对的。像这样这个代码编译能过?
这个静态方法用了非静态的成员变量,感觉应该编译就过不了