在www.izuren.com上面看到的java面试题, 查找代码里的错误.1.
abstract class Name {
private String name;
public abstract boolean isStupidName(String name) {}
}
大侠们,这有何错误?
2.
public class Something {
void doSomething () {
private String s = “”;
int l = s.length();
}
}有错吗?
3.
abstract class Something {
private abstract String doSomething ();
}
这好像没什么错吧?
4.
public class Something {
public int addOne(final int x) {
return ++x;
}
}
5.
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;
}
abstract class Name {
private String name;
public abstract boolean isStupidName(String name) {}
}
大侠们,这有何错误?
2.
public class Something {
void doSomething () {
private String s = “”;
int l = s.length();
}
}有错吗?
3.
abstract class Something {
private abstract String doSomething ();
}
这好像没什么错吧?
4.
public class Something {
public int addOne(final int x) {
return ++x;
}
}
5.
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;
}
1.abstract 方法不能有实现
2.方法中不能使用private
3.private 和abstract矛盾,谁来实现该方法?
4.final的x不能改变学习方法:自己编译一遍,看有什么编译错误,就理解了.
同意1楼5正确。
2. doSomething () 方法中不能使用private
3. 不能同时使用private abstract
2.public 方法是给其他类访问的,private属性只能被同一个类访问,肯定要出错。
3.还是访问权限的问题,抽象类是为了让其他类实现的,那么实现是实现它里面的方法,方法的访问权限是private 只能被同一个类中访问。其他类实现不了,所以要错啊。
4.final变量初始化后就是常量了。常量怎么可以++操作。
public int addOne(final int x) {
return ++x;
}
改变的事整型x本身 与final矛盾5.
public void addOne(final Other o) {
o.i++;
}
改变的是对象o的属性 而对象o没有改变
abstract class Name {
private String name;
//这个很明显是错的,既然声明了是abstract,就不能同时又实现该方法了
//改为public abstract boolean isStupidName(String name);
public abstract boolean isStupidName(String name){}
}
2.错public class Something {
void doSomething() {
//局部变量不能用private等访问修饰符修饰
//改为String s = "";
private String s = "";
int l = s.length();
}
}
3.错
abstract class Something {
//你用private修饰的话,继承这个类的子类没有访问父类私有成员的权限,实现不了这个方法
private abstract String doSomething();
}
4.错
public class Something {
//x被final修饰,也不是不能改变它的值,而++x改变了它的值,所以是错
public int addOne(final int x) {
return ++x;
}
}5.对public class Something {
public static void main(String[] args) {
Other o = new Other();
new Something().addOne(o);
}
//final修饰的变量是引用类型时,不变的是引用地址,而引用地址里的内容是可以改变的,所以o.i++没错
public void addOne(final Other o) {
o.i++;
}
}class Other {
public int i;
}
2、局部变量不能用private等访问修饰符修饰
3、抽象类的修饰符默认是public不能是private
4、final修饰符修饰属性时该属性是常量
5、final修饰的变量是引用类型时,不变的是引用地址,而引用地址里的内容是可以改变的,所以o.i++没错
---------------------------
省事往往是费事苗子
---------------------------
1,已经有了实现(虽然是空实现),所以不能申明为abstract方法
2,方法中不能定义private变量
3,抽象类中的抽象方法是需要被继承,然后被重写的,所以不能申明为private
4,X是final(常量),所以不能更改.
5,正确
abstract class Name {
private String name;
public abstract boolean isStupidName(String name) {} //不能有方法体把{}改成;
}
2.
public class Something {
void doSomething () {
private String s = “”; //private是属性修饰符这里这个String只是个变量
int l = s.length();
}
}
3
abstract class Something {
private abstract String doSomething (); //定义成private别人怎么重写
}
4.
public class Something {
public int addOne(final int x) { //final修饰的参数一旦x被传进来就不能在方法里改其值了
return ++x;
}
}
5. 貌似没什么错误
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;
}
谢谢楼主
9楼和14楼讲的很详细。
[/Quote
学习了