java题求详解

packagecertkiller;classTarget{publicStringname="hello";}哪些类能够直接访问并且改变name这个变量的值。代码片段1... package certkiller;
class Target {
public String name = "hello";
}
哪些类能够直接访问并且改变name这个变量的值。

代码片段1:

public class ComplexCalc {
public int value;
public void calc() { value += 5; }
}

代码片段2:

public class MoreComplexCalc extends ComplexCalc {
public void calc() { value -= 2; }
public void calc(int multi) {
calc();
super.calc();
value *= multi;
}
public static void main(String[] args){
MoreComplexCalc calc = new MoreComplexCalc();
calc.calc(3);
System.out.println("Oh it is: " + calc.value);
}
}

请问编译运行的结果是什么?
value没被赋值自动赋0? 求详解

class Sudo {
static void telnet() { /* 这里是省略的代码 */ }
void ssh() { /* 这里是省略的代码 */ }
}
请问哪些选项的描述是正确的?
A
Sudo.ssh()能够正确调用ssh()方法
B
Sudo.telnet()能够正确调用telnet()
C
在ssh()方法里面,能够直接调用telnet()
D
在telnet()方法里面,能够直接调用ssh()
展开
 我来答
zsc我行我素
2013-12-12 · TA获得超过241个赞
知道小有建树答主
回答量:142
采纳率:0%
帮助的人:92.3万
展开全部
1 public 是公共的意思 只要能访问Target这个类 就能访问name变量并去修改它的值
2 结果应该是 Oh it is: 15 成员变量未被初始化时有默认值 int类型是0, 局部变量必须被初始化

3 应该选 B、C
不懂 可以追问
追问
1、只有certkiller包下的类可以访问改变name吗?为什么?

3、a、d为什么不行 其实我有答案 求详解。。
追答
  1.    对  是可以访问的   因为name的修饰符是public的  但要通过Target类对象来访问

3. 静态方法(static 修饰的方法)可以通过类名来访问    非静态方法里可以调用静态方法,但静态方法里不能调用非静态方法   一般的方法叫实例方法,你可以去百度一下静态方法与实例方法的区别   我这一两句也跟你说不清楚     

 

遇到问题要多查

乙浦泽52
2013-12-12 · TA获得超过141个赞
知道答主
回答量:45
采纳率:0%
帮助的人:38.6万
展开全部
  1. certkiller包下的类可以访问改变name,原因是该类并不是public型的,所以被限制到同包名的下面的类才能访问。

  2. 结果是 Oh it is: 9    value被初始化时默认值为0,由于调用void calc(int multi)时,先调用了自身的calc();则得到的value的值应该是-2,接着调用的super.calc(),也就是vaule的值加上5,所以变成了value=3,再运算value *= multi;时,得到的value=9。

  3. B、C,其中 A错误的原因是ssh()方法并不是静态,在这个类未被实例化时该方法未被程序加载到内存中,所以不能够被直接调用;D错误的原因是静态的方法体中只能引用静态的方法和变量

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式