关于静态方法引用的疑问

沙芝 2018-11-29 10:58:48
初学java的菜鸟,关于静态方法只能访问静态成员有个小疑问,请老手指教。

范例1、主方法静态,其引用的方法sop()必须为静态,这个好理解。
class YinYong
{

public static void main(String[] args)
{
sop("从键盘输入一串字符");
}

static void sop(String s)
{
System.out.println(s);
}

}

范例2、主方法静态,yy为局部变量,其调用sop()方法不需要是静态的,这个也能理解。
class YinYong
{

public static void main(String[] args)
{
YinYong yy = new YinYong();
yy.sop("从键盘输入一串字符");
}

void sop(String s)
{
System.out.println(s);
}

}

范例3、主方法静态,yy为成员变量,因此必须是静态的。但是主方法和成员都是静态的,其调用sop()方法却不需要是静态的,这是为什么?
class YinYong
{
static YinYong yy = new YinYong();

public static void main(String[] args)
{
yy.sop("从键盘输入一串字符");

}

void sop(String s)
{
System.out.println(s);
}

}
...全文
267 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
phelop 2018-12-15
  • 打赏
  • 举报
回复
因为这个yy有钱,static YinYong yy = new YinYong(); 就跟你只要有钱,你叫女孩子就会理你, 而静态方法臭屌丝一个,穷的不行,只能叫跟他一样的女孩; 但是那个yy开局你给了他钱了,所以你在哪都能叫动所有女孩子; 开局充钱无解的
qybao 2018-12-06
  • 打赏
  • 举报
回复
main为什么能直接使用yy,因为yy是static,即静态成员
main为什么能使用soap,因为是通过yy.soap的方式调用的,即通过调用静态成员(已实例化)的方法来调用的,而不是直接调用soap方法
wp500 2018-12-05
  • 打赏
  • 举报
回复
yy是YinYong的实例,实例就可以调用非静态方法了
  • 打赏
  • 举报
回复
new 了之后 是已经加载过方法了,所以可以调用; 你把main 方法 和这个类分开写,就好理解了
sperospera 2018-12-04
  • 打赏
  • 举报
回复
对象调用自己的方法,和方法是不是静态没有关系了,可以调用的,不管是否是静态的都是可以用的。
nayi_224 2018-11-29
  • 打赏
  • 举报
回复
调用sop()方法跟调用yy对象的sop()方法是两个东西。静态方法只能调用静态对象,这个对象指的是yy。
qq_39936465 2018-11-29
  • 打赏
  • 举报
回复
列3是因为yy是类变量,当然可以调用自己类中的方法,而例1中是因为main方法直接调用同类中方法,静态方法只能调用同类中的静态变量和静态方法。
Albert Yang 2018-11-29
  • 打赏
  • 举报
回复
静态方法只能访问静态成员,第三个例子中静态成员是yy,不是stop(方法)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧