一个方法重写的问题
1、public class SupClass {
public SupClass() {
}
public void print(){
System.out.print("sup");
}
}
2、public class SubClass extends SupClass{
public SubClass() {
}
protected void print(){
System.out.print("sub");
}
public static void main(String[] args){
SubClass subClass=new SubClass();
subClass.print();
}
}
答案 A、编译通不过; B、编译能通过,运行报错; c、打印出sup; d、打印出sub;
我选了 A,面试官说D;回来专门测试了下,的确编译通不过,提示:
"SubClass.java": print() in com.SubClass cannot override print() in com.SupClass; attempting to assign weaker access privileges; was public at line 6, column 5
这种情况怎么办?
1 楼 wolfbrood 2008-06-14 子类如果要重写父类的方法,那么子类作用域不能小于父类,也就是说如果父类是public,那么子类必须是public,不能是别的,这样就做到了在调用父类的地方都能调用子类,如果子类的修饰符不是public,那么就会有问题。
比如:
SupClass sup = new SupClass();
sup.print();
sup = new SubClass();
sup.print();
按照继承关系,SubClass是SupClass的子类,那么可以调用父类print方法的地方都可以调用子类的print。如果修饰符不是public,那么上面这个代码就不能运行,也就违背继承原则,父类就不是子类的一个子集。 2 楼 yuan 2008-06-14 wolfbrood 写道子类如果要重写父类的方法,那么子类作用域不能小于父类,也就是说如果父类是public,那么子类必须是public,不能是别的,这样就做到了在调用父类的地方都能调用子类,如果子类的修饰符不是public,那么就会有问题。
比如:
SupClass sup = new SupClass();
sup.print();
sup = new SubClass();
sup.print();
按照继承关系,SubClass是SupClass的子类,那么可以调用父类print方法的地方都可以调用子类的print。如果修饰符不是public,那么上面这个代码就不能运行,也就违背继承原则,父类就不是子类的一个子集。
楼主问的应该是:笔试的时候,我答对了,但考官搞错了,怎么办?
那考官自己的基础都不好,你还在乎这家公司、在乎这次面试么?我觉得找一个好的技术团队很重要,工资、公司大小之类的都是次要的。 3 楼 wolfbrood 2008-06-14 深秋小雨 写道wolfbrood 写道子类如果要重写父类的方法,那么子类作用域不能小于父类,也就是说如果父类是public,那么子类必须是public,不能是别的,这样就做到了在调用父类的地方都能调用子类,如果子类的修饰符不是public,那么就会有问题。
比如:
SupClass sup = new SupClass();
sup.print();
sup = new SubClass();
sup.print();
按照继承关系,SubClass是SupClass的子类,那么可以调用父类print方法的地方都可以调用子类的print。如果修饰符不是public,那么上面这个代码就不能运行,也就违背继承原则,父类就不是子类的一个子集。
楼主问的应该是:笔试的时候,我答对了,但考官搞错了,怎么办?
那考官自己的基础都不好,你还在乎这家公司、在乎这次面试么?我觉得找一个好的技术团队很重要,工资、公司大小之类的都是次要的。
面试完了之后就别管那么多了,继续做自己的事。想多了也没用。好比有人和我说java里面不用声明变量就可以直接用,好比javascript,我当时就无语。 4 楼 simon1006 2008-06-14 后来发了份邮件过去,去提这事,真的要挂,也不能不明不白! 5 楼 insiku 2008-06-14 看你对这家公司是否在意
技术面试的面试官技术都不咋样 进去就怕被穿小鞋 6 楼 偷听女孩心 2008-06-15 面你的人基础很糟糕
7 楼 zfwnana 2008-06-16 - -~!看开点吧~,就算你面试通过了,你也要想想要是这面试官是你同事,你工作会怎样?虽然面试题实际运用中不多,但至少说明了这公司面试题准备不充分吧.
难道还有BT的?故意出错,看谁指出他的错误?然后录取?(- -~!应该没这么BT)