假设类Foo如下图(1)中定义,f是类Foo的一个对象.
答案:1 悬赏:70 手机版
解决时间 2021-04-07 23:14
- 提问者网友:练爱
- 2021-04-07 13:32
假设类Foo如下图(1)中定义,f是类Foo的一个对象.
最佳答案
- 五星知识达人网友:長槍戰八方
- 2021-04-07 14:16
你的问题很简单,关键在于区分类变量(方法) 和 实例变量(方法)
类变量也叫静态变量,也就是在变量前加了static 的变量;
实例变量也叫对象变量,即没加static 的变量;
方法同上
区别在于:
类变量和实例变量的区别在于:类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果;而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象;
例:
public class A{
static int a = 0; //类变量
int b = 0; //实力变量
}分开写个B类,便于观察:
public class B{
public void main (String[] args){
A a1 = new A();
A a2 = new A();
a1.a = 3; // 等同于 A.a = 3;
a1.b = 4 ;
System.out.println(a2.a); //结果为3
//类变量是针对所有对象的,所以a1改变a,a2的a也改变
System.out.println(a2.b); //结果为0
//实例只改变自身的,所以a1对象的b改变,不影响对象a2的b变量
}
}那么对于你的问题
System.out.println(f.i); // 通过实例访问实例变量 -- ok
System.out.println(f.s); // 通过实例访问类变量 -- ok
f.imethod(); // 通过实例访问实例方法 -- ok
f.smethod(); // 通过实例访问类方法 -- ok
System.out.println(Foo.i); // 通过类访问实例变量 -- 错误
System.out.println(Foo.s); // 通过类访问类变量 -- ok
Foo.imethod(); // 通过类访问实例方法 -- 错误
Foo.smethod(); // 通过类访问类方法 -- ok
亲,回答也需要时间与精力,如果回答满意,请及时采纳,谢谢!
类变量也叫静态变量,也就是在变量前加了static 的变量;
实例变量也叫对象变量,即没加static 的变量;
方法同上
区别在于:
类变量和实例变量的区别在于:类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果;而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象;
例:
public class A{
static int a = 0; //类变量
int b = 0; //实力变量
}分开写个B类,便于观察:
public class B{
public void main (String[] args){
A a1 = new A();
A a2 = new A();
a1.a = 3; // 等同于 A.a = 3;
a1.b = 4 ;
System.out.println(a2.a); //结果为3
//类变量是针对所有对象的,所以a1改变a,a2的a也改变
System.out.println(a2.b); //结果为0
//实例只改变自身的,所以a1对象的b改变,不影响对象a2的b变量
}
}那么对于你的问题
System.out.println(f.i); // 通过实例访问实例变量 -- ok
System.out.println(f.s); // 通过实例访问类变量 -- ok
f.imethod(); // 通过实例访问实例方法 -- ok
f.smethod(); // 通过实例访问类方法 -- ok
System.out.println(Foo.i); // 通过类访问实例变量 -- 错误
System.out.println(Foo.s); // 通过类访问类变量 -- ok
Foo.imethod(); // 通过类访问实例方法 -- 错误
Foo.smethod(); // 通过类访问类方法 -- ok
亲,回答也需要时间与精力,如果回答满意,请及时采纳,谢谢!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯