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(); }
}
展开
 我来答
eduel
推荐于2016-11-10 · 超过14用户采纳过TA的回答
知道答主
回答量:22
采纳率:0%
帮助的人:13.4万
展开全部
static float returnArea(Shape s);这个方法中Shape s是方法的形式参数,属于方法签名的一部分。表明在此方法进行调用的时候,接受一个Shape类型的实际参数,比如
Circle c;
C = newCircle(1.0f);
System.out.println(“圆的面积=”+returnArea(c));
这个时候,方法调用的时候需要传入一个new好的circle对象,以匹配方法的形式参数,当然这里这里方法的形式参数为一个接口类型,所以可以传入一个实现此接口的任意类型
追问
原来是形参,不过如果这样说的话下面的s.area()是怎么个意思,s不就只是一个变量吗,怎么还能调用方法了???
追答
你可以这么理解,当方法调用的时候形参被实际参数替代了。也就是被你new出来的这个circle的引用代替了
终结孤单May
推荐于2018-04-07
知道答主
回答量:1
采纳率:0%
帮助的人:1334
展开全部
如果创建一个对象的话,会在内存开辟一段内存空间,而且这里创建对象也没有实际意义,因为该静态函数只是用来返回圆的面积,所以不需要创建对象
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
过来问问你
2014-08-21 · TA获得超过1930个赞
知道小有建树答主
回答量:2742
采纳率:0%
帮助的人:1276万
展开全部
static floatreturnArea(Shape s) //这里为什么不用new一个对象呢??
{ return s.area(); }

floatreturnArea这个方法有问题,既然方法体中有return语句,那么应该要声明返回类型。这只是类example中的一个方法,和new有什么关系?
追问
不好意思,丢了个空格是float  returnArea(Shape s)

难道shape s不是声明了一个对象吗,难道不是说 s.area就是通过局部对象调用了shape类利的area方法吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式