关于静态方法引用的疑问

[复制链接]
查看11 | 回复8 | 2021-1-27 06:16:19 | 显示全部楼层 |阅读模式
初学java的菜鸟,关于静态方法只能访问静态成员有个小疑问,请老手指教。
范例1、主方法静态,其引用的方法sop()必须为静态,这个好理解。
classYinYong
{
publicstaticvoidmain(String[]args)
{
sop("从键盘输入一串字符");
}
staticvoidsop(Strings)
{
System.out.println(s);
}
}
范例2、主方法静态,yy为局部变量,其调用sop()方法不需要是静态的,这个也能理解。
classYinYong
{
publicstaticvoidmain(String[]args)
{
YinYongyy=newYinYong();
yy.sop("从键盘输入一串字符");
}
voidsop(Strings)
{
System.out.println(s);
}
}
范例3、主方法静态,yy为成员变量,因此必须是静态的。但是主方法和成员都是静态的,其调用sop()方法却不需要是静态的,这是为什么?
classYinYong
{
staticYinYongyy=newYinYong();
publicstaticvoidmain(String[]args)
{
yy.sop("从键盘输入一串字符");
}
voidsop(Strings)
{
System.out.println(s);
}
}
分 -->
回复

使用道具 举报

千问 | 2021-1-27 06:16:19 | 显示全部楼层
列3是因为yy是类变量,当然可以调用自己类中的方法,而例1中是因为main方法直接调用同类中方法,静态方法只能调用同类中的静态变量和静态方法。

回复

使用道具 举报

千问 | 2021-1-27 06:16:19 | 显示全部楼层
调用sop()方法跟调用yy对象的sop()方法是两个东西。静态方法只能调用静态对象,这个对象指的是yy。
回复

使用道具 举报

千问 | 2021-1-27 06:16:19 | 显示全部楼层
静态方法只能访问静态成员,第三个例子中静态成员是yy,不是stop(方法)
回复

使用道具 举报

千问 | 2021-1-27 06:16:19 | 显示全部楼层
对象调用自己的方法,和方法是不是静态没有关系了,可以调用的,不管是否是静态的都是可以用的。
回复

使用道具 举报

千问 | 2021-1-27 06:16:19 | 显示全部楼层
new了之后是已经加载过方法了,所以可以调用;你把main方法和这个类分开写,就好理解了
回复

使用道具 举报

千问 | 2021-1-27 06:16:19 | 显示全部楼层
yy是YinYong的实例,实例就可以调用非静态方法了
回复

使用道具 举报

千问 | 2021-1-27 06:16:19 | 显示全部楼层
main为什么能直接使用yy,因为yy是static,即静态成员
main为什么能使用soap,因为是通过yy.soap的方式调用的,即通过调用静态成员(已实例化)的方法来调用的,而不是直接调用soap方法
回复

使用道具 举报

千问 | 2021-1-27 06:16:19 | 显示全部楼层
因为这个yy有钱,staticYinYongyy=newYinYong();
就跟你只要有钱,你叫女孩子就会理你,
而静态方法臭屌丝一个,穷的不行,只能叫跟他一样的女孩;
但是那个yy开局你给了他钱了,所以你在哪都能叫动所有女孩子;
开局充钱无解的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行