Java 2、重载与重写.doc_第1页
Java 2、重载与重写.doc_第2页
Java 2、重载与重写.doc_第3页
Java 2、重载与重写.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

重点题型:重载与重写 5/5l 总结1、重载:1)参数列表必须不同,个数的不同完全可以,如果个数相同则返回类型可以不同,但它不足以作为唯一的差异。 2)只考虑参数列表不同就可以重载;例如a(int a,int b)和a(long a,int b)也算重载;2、重写:1)、覆盖方法的返回类型和参数列表一样必须与它所覆盖的方法相同。2)、覆盖方法不能比它所覆盖的方法访问性差3)、覆盖方法不能比它所覆盖的方法抛出更多的异常。3、构造函数不能被继承4、final 防止方法重写; 如:static final void methoda()大-小:public、protected 、default、private修饰符 同类 同包 子类 通用性 public 公共 是 是 是 是protected 受保护 是 是 是default 缺省 是 是private 私有 是 l 58. which two declaretions prevent the overriding of a method? 翻译:那两种声明防止方法重写?A. final void methoda() B. void final methoda() C. static void methoda() D. static final void methoda() E. final abstract void methoda() 答案:adl public class Parent public int addValue( int a, int b) int s;s = a+b;return s;class Child extends Parent Which methods can be added into class Child?A. int addValue( int a, int b )/ do something.B. public void addValue ()/ do something.C. public int addValue( int a )/ do something.D. public int addValue( int a, int b )throws MyException /do something.答案:(bc)题目:哪些方法可以加入类Child中。此题涉及方法重载(overload),方法重写(override)以及类派生时方法重写的规则。方法重载的规则是:一、参数列表必须不同,个数的不同完全可以,如果个数相同则参数类型的不同不能引起歧意,例如int 和long,float和double就不能作为唯一的类型不同;二、返回值可以不同,但是不能是重载时唯一的不同点(这点和c+中不同,c+中返回类型必须一致)。方法重写发生在类继承时,子类可以重写一个父类中已有的方法,必须在返回类型和参数列表一样时才能说是重写,否则就是重载,java中方法重写的一个重要而且容易被忽略的规则是重写的方法的访问权限不能比被重写的方法的访问权限低!重写的另一个规则是重写的方法不能比被重写的方法抛弃(throws)更多种类的异常,其抛弃的异常只能少,或者是其子类,不能以抛弃异常的个数来判断种类,而应该是异常类层次结果上的种类。此题中答案a的错误就是重写的访问权限比被重写的方法的低,而b,c都属于重载,d的错误在于比被重写的方法抛弃了更多种类的异常。l which method, placed at line 6, will cause a compiler error?1)class Super 2) public float getNum()return 3.0f; 3) 4) 5) public class Sub extends Super 6) 7) which method, placed at line 6, will cause a compiler error? A. public float getNum()return 4.0f; /重写B. public void getNum()/带有歧义的重载 public void getNum()C. public void getNum(double d) /重载D. public double getNum(float d)return 4.0d; /重载答案:Bl public class MethodOver public void setVar(int a, int b, float c) which overload the setVar? A.private void setVar(int a, float c, int b) B.protected void setVar(int a, int b, float c) C.public int setVar(int a, float c, int b)return a; D.public int setVar(int a, float c)return a; 答案:a,c,d小心A答案,他是对的,重载不考虑权限。l 69. Given:1. class BaseClass2. private float x= 1.0f;3. protected void setVar (float f) x = f;4. 5. class SubClass extends BaseClass 6. private float x = 2.0f;7. /insert code here8. Which two are valid examples of method overriding? (Choose Two) A. void setVar(float f) x = f;B. public void setVar(int f) x = f;C. public void setVar(float f) x = f;D. public double setVar(float f) x = f;E. public final void setVar(float f) x = f;F. protected float setVar() x=3.0f; return 3.0f; /错在 x是float型,不可改变;答案:BEl 子类中重载Given the following code:class Person String name,department;public void printValue() System.out.println(name is +name);System.out.println(department is +department);public class Teacher extends Person int salary;public void printValue()/ doing the same as in the parent method printValue()/ including print the value of name and department.System.out.println(salary is +salary);Which expression can be added at the doing the same as. part of the method printValue()?A. printValue();B. this.printValue();C. person.printValue();D. super.printValue().答案:(d)题目:给出下面的代码: 下面的哪些表达式可以加入printValue()方法的doing the same as.部分。子类可以重写父类的方法,在子类的对应方法或其它方法中要调用被重写的方法需要在该方法前面加上”super.”进行调用,如果调用的是没有被重写的方法,则不需要加上super.进行调用,而直接写方法就可以。这里要指出的是java支持方法的递归调用,因此答案a和b在语法上是没有错误的,但是不符合题目代码中说明处的要求:即做和父类的方法中相同的事情?打印名字和部门,严格来说也可以选a和b。l 143. Given:1. public class MethodOver 2. private int x, y;3. private float z;4. public void setVar(int a, int b, float c)5. x = a;6. y = b;7. z = c;8. 9. Which two overload the setVar method? (Choose Two) A.void setVar (int a, int b, float c)x = a;y = b;z = c;B. public void setVar(int a, float c, int b) setVar(a, b, c);C. public void setVar(int a, float c, int b) this(a, b, c);/要正确的话应该是this.setVar(a,b,c),而 this(a,b,c)是非法的,因为单单this这样是使用了非法标识符;注意this.a或this.b是合法的。D. public void setVar(int a, float b)x = a;z = b;E. public void setVar(int ax, int by, float cz) x = ax;y = by;z = cz;答案:BDl Which of the following methods can be legally inserted in place of the comment /Method Here ? class Base public void amethod(int i) public class Scop

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论