java面试题(9月17日)
2016-09-17 09:24
148 查看
82、public class Something
{ public static void main(String[] args)
{
Other o = new Other(); new Something().addOne(o);
}
public void addOne(final Other o)
{ o.i++; }}
class Other { public int i;}
和上面的很相似,都是关于final的问题,这有错吗?
正确。在addOne method中,参数o被修饰成final。如果在addOne method里我们修改了o的reference,(比如: o = new Other();),那么如同上例这题也是错的。但这里修改的是o的member vairable(成员变量),而o的reference并没有改变。
87、 interface A{ int x = 0;}
class B{ int x =1;}
class C extends B implements A {
public void pX(){ System.out.println(x); }
public static void main(String[] args) { new C().pX(); }
}
错误。在编译时会发生错误(错误描述不同的JVM有不同的信息,意思就是未明确的x调用,两个x都匹配(就象在同时import java.util和java.sql两个包时直接声明Date一样)。对于父类的变量,可以用super.x来明确,而接口的属性默认隐含为 public static final.所以可以通过A.x来明确。
{ public static void main(String[] args)
{
Other o = new Other(); new Something().addOne(o);
}
public void addOne(final Other o)
{ o.i++; }}
class Other { public int i;}
和上面的很相似,都是关于final的问题,这有错吗?
正确。在addOne method中,参数o被修饰成final。如果在addOne method里我们修改了o的reference,(比如: o = new Other();),那么如同上例这题也是错的。但这里修改的是o的member vairable(成员变量),而o的reference并没有改变。
87、 interface A{ int x = 0;}
class B{ int x =1;}
class C extends B implements A {
public void pX(){ System.out.println(x); }
public static void main(String[] args) { new C().pX(); }
}
错误。在编译时会发生错误(错误描述不同的JVM有不同的信息,意思就是未明确的x调用,两个x都匹配(就象在同时import java.util和java.sql两个包时直接声明Date一样)。对于父类的变量,可以用super.x来明确,而接口的属性默认隐含为 public static final.所以可以通过A.x来明确。
相关文章推荐
- SCJP一些笔记&&局部类和嵌套类&&JAVA面试题&&XML区别
- 一道微软面试题的java解法(2)
- 找java工作的时候经常被问到的面试题,呵呵
- 某公司的JAVA面试题
- (转)java华为面试题
- java32个面试题,转载!
- java面试题集
- [转载] JAVA面试题
- [Web]Java面试题
- Java陷阱一箩筐----面试题集
- java面试题1
- java常用面试题
- java面试题
- JAVA华为面试题
- Java陷阱一箩筐----面试题集
- Java陷阱一箩筐----面试题集
- [转载] JAVA面试题集合
- [转载] JAVA面试题
- java面试题(2)
- Java 面试题及其答案