java类方法引用实例方法时候为什么只用声明一个对象就能直接引用了
classShape{floatarea()//抽象的几何形状,一律返回面积为0{return0.0f}}classCircleextendsShape{floatR;C...
class Shape{
float area()//抽象的几何形状,一律返回面积为0
{ return 0.0f }
}
class Circle extends Shape{
float R;
Circle(float r)
{ R = r; }
float area()//圆类重新定义求面积的方法,能正确求出圆的面积
{ return 3.1415926f*R*R;}
}
public class example {
public staticvoid main(String [] args){
Circle c;
C = newCircle(1.0f);
System.out.println(“圆的面积=”+returnArea(c));
}
static floatreturnArea(Shape s) //这里为什么不用new一个对象呢??
{ return s.area(); }
} 展开
float area()//抽象的几何形状,一律返回面积为0
{ return 0.0f }
}
class Circle extends Shape{
float R;
Circle(float r)
{ R = r; }
float area()//圆类重新定义求面积的方法,能正确求出圆的面积
{ return 3.1415926f*R*R;}
}
public class example {
public staticvoid main(String [] args){
Circle c;
C = newCircle(1.0f);
System.out.println(“圆的面积=”+returnArea(c));
}
static floatreturnArea(Shape s) //这里为什么不用new一个对象呢??
{ return s.area(); }
} 展开
3个回答
展开全部
static float returnArea(Shape s);这个方法中Shape s是方法的形式参数,属于方法签名的一部分。表明在此方法进行调用的时候,接受一个Shape类型的实际参数,比如
Circle c;
C = newCircle(1.0f);
System.out.println(“圆的面积=”+returnArea(c));
这个时候,方法调用的时候需要传入一个new好的circle对象,以匹配方法的形式参数,当然这里这里方法的形式参数为一个接口类型,所以可以传入一个实现此接口的任意类型
Circle c;
C = newCircle(1.0f);
System.out.println(“圆的面积=”+returnArea(c));
这个时候,方法调用的时候需要传入一个new好的circle对象,以匹配方法的形式参数,当然这里这里方法的形式参数为一个接口类型,所以可以传入一个实现此接口的任意类型
追问
原来是形参,不过如果这样说的话下面的s.area()是怎么个意思,s不就只是一个变量吗,怎么还能调用方法了???
追答
你可以这么理解,当方法调用的时候形参被实际参数替代了。也就是被你new出来的这个circle的引用代替了
展开全部
如果创建一个对象的话,会在内存开辟一段内存空间,而且这里创建对象也没有实际意义,因为该静态函数只是用来返回圆的面积,所以不需要创建对象
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
static floatreturnArea(Shape s) //这里为什么不用new一个对象呢??
{ return s.area(); }
floatreturnArea这个方法有问题,既然方法体中有return语句,那么应该要声明返回类型。这只是类example中的一个方法,和new有什么关系?
{ return s.area(); }
floatreturnArea这个方法有问题,既然方法体中有return语句,那么应该要声明返回类型。这只是类example中的一个方法,和new有什么关系?
追问
不好意思,丢了个空格是float returnArea(Shape s)
难道shape s不是声明了一个对象吗,难道不是说 s.area就是通过局部对象调用了shape类利的area方法吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询