面向对象试题_第1页
面向对象试题_第2页
面向对象试题_第3页
面向对象试题_第4页
面向对象试题_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

1、1、 抽象类和接口的区别,什么时候用?接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的;另外,实现接口的一定要实现接口里定义的所有方法,而实现抽象类可以有选择地重写需要用到的方法(一般的应用里,最顶级的是接口,然后是抽象类实现接口,最后才到具体类实现)。 还有,接口可以实现多重继承,而一个类只能继承一个超类,但可以通过继承多个接口实现多重继承,接口还有标识(里面没有任何方法,如Remote接口)和数据共享(里面的变量全是常量)的作用.2、 abstractclassNameprivateStringname;publicabstractbool

2、eanisStupidName(Stringname)这有何错误?abstract method必须以分号结尾,且不带花括号3、 abstractclassSomethingprivateabstractStringdoSomething();这有何错误?abstract的methods不能以private修饰。abstract的methods就是让子类implement(实现)具体细节的,怎么可以用private把abstractmethod封锁起来呢? (同理,abstract method前不能加final)4、 interfaceAintx=0;classBintx=1;classCe

3、xtendsBimplementsApublicvoidpX()System.out.println(x);publicstaticvoidmain(Stringargs)newC().pX();这有何错误?在编译时会发生错误(错误描述不同的JVM有不同的信息,意思就是未明确的x调用,两个x都匹配(就象在同时import java.util和java.sql两个包时直接声明Date一样)。对于父类的变量,可以用super.x来明确,而接口的属性默认隐含为 public static final.所以可以通过A.x来明确。5、 interfacePlayablevoidplay();interf

4、aceBounceablevoidplay();interfaceRollableextendsPlayable,BounceableBallball=newBall(PingPang);classBallimplementsRollableprivateStringname;publicStringgetName()returnname;publicBall(Stringname)=name;publicvoidplay()ball=newBall(Football);System.out.println(ball.getName();这有何错误?interface Rol

5、lable extends Playable, Bounceable没有问题。interface可继承多个interfaces,所以这里没错。问题出在interface Rollable里的Ball ball = new Ball(PingPang);。任何在interface里声明 的interface variable (接口变量,也可称成员变量),默认为public static final。也就是说Ball ball = new Ball(PingPang);实际上是public static final Ball ball = new Ball(PingPang);。在Ball类的P

6、lay()方法中,ball = new Ball(Football);改变了ball的reference,而这里的ball来自Rollable interface,Rollable interface里的ball是public static final的,final的object是不能被改变reference的。因此编译器将在ball = new Ball(Football);这里显示有错。6、 classAprotectedintmethod1(inta,intb)return0;WhichtwoarevalidinaclassthatextendsclassA?( A C)A. publi

7、cintmethod1(inta,intb)return0;B.privateintmethod1(inta,intb)return0;C.privateintmethod1(inta,longb)return0;D.publicshortmethod1(inta,intb)return0;E.staticprotectedintmethod1(inta,intb)return0;7、 publicclassOuterpublicvoidsomeOuterMethod()/Line3publicclassInnerpublicstaticvoidmain(Stringargv)Outero=n

8、ewOuter();/Line8WhichinstantiatesaninstanceofInner?(A E)newInner();/Atline3B.newInner();/Atline8C.newo.Inner();/Atline8D.newOuter.Inner();/Atline8E.newOuter().newInner()/Atline88、AnonymousInnerClass(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?Anonymous Inner Class (匿名内部类)不能extends其他类,但它

9、可以是其他类的子类。匿名内部类可以实现接口9、面向对象的基本特征有哪些方面1.抽象2.继承3.封装4. 多态性10、处理字符串时,操作符=和方法equals()的区别。字符串属于对象;在对象比较中= = 比较的是内存对象,也就是是不是同一个对象;而 equals比较的 内容是否相等11、内部类可以引用他包含类的成员吗?有没有什么限制?一个普通内部类可以访问他的外部类的所有的成员,没有任何限制;反之外部类不能直接访问内部类的成员;内部类变量的其作用范围只在内部类内部;12、写一个Money类,包含金额和币种两个属性,以及加、减两个方法。public class MoneyClass privat

10、e BigDecimal money;private Short type;public BigDecimal getMoney() return money;public void setMoney(BigDecimal money) this.money = money;public Short getType() return type;public void setType(Short type) this.type = type;/ 加public void add(MoneyClass operand) throws CurrencyExcepiton if (operand.mo

11、ney = null | this.money = null) throw new NullPointerException();this.money.add(operand.money);/ 减public void subtract(MoneyClass operand) throws CurrencyExcepiton if (operand.money = null | this.money = null) throw new NullPointerException();this.money.subtract(operand.money);/ 自己定义的异常类型class Curre

12、ncyExcepiton extends Exception Overridepublic String toString() return 货币操作出现异常:货币类型不一致;13、JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。在Java中,每个异常都是一个对象,它是Throwable类或其它子类的实例。当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行处理

13、。Java的异常处理是通过5个关键词来实现的:try、catch、throw、throws和finally。用try来指定一块预防所有异常的程序。紧跟在try程序后面,应包含一个catch子句来指定你想要捕捉的异常的类型。throw语句用来明确地抛出一个异常。throws用来标明一个成员函数可能抛出的各种异常。Finally为确保一段代码不管发生什么异常都被执行一段代码。一般情况下是用try来执行一段程序,如果出现异常,系统会抛出(throws)一个异常,这时候你可以通过它的类型来捕捉(catch)它,或最后(finally)由缺省处理器来处理。14、是否可以从一个static方法内部发出对非

14、static方法的调用?不可以.从类的加载顺序上来说,静态方法或静态变量是最先被加载到内存的,此时内存中还没有非静态的方法,所以无法调用;使用静态方法时候,要注意以下几点:a. 在静态方法中只能直接调用同类中的其他静态方法或静态变量,而不能直接调用非静态的方法或变量;b.静态方法不能以任何方法引用this或supper关键字15、final,finally,finalize的区别。 final,修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保

15、证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载 finally,在异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话),如果try代码中有return语句时,也会先执行finally,再执行return。 finalize,方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引

16、用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。16、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用=还是equals()?既不是通过=也不是通过equals()方法,而是通过iterator()方法来区分重复纪录的;17、StaticNestedClass(静态内部类)和InnerClass(内部类)的不同静态内部类不能访问外部类的实例变量,既不能共享外部类的实例变量。静态内部类不是内部类,而是两个类之

17、间的隐含关系。18、GC是什么?为什么要有GC?(基础)。垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?GC是垃圾收集器。当一个对象的引用丢失后,即没有地方再引用了该对象,这个对象将成为垃圾。但这样的对象仍在内存中,占据内存资源,虚拟机会按一定的方式启动垃圾收集器来回收这些对象占据的内存。如果想通过程序去回收内存,可以通过System.gc()或Runtime.getRuntime().gc()方法通知虚拟机进行垃圾回收,但并不一定马上就会执行垃圾回收,也就是不能强制立即执行垃圾回收,只能通知垃圾回收器有空的话赶紧去收拾一下。19、Overload和Override的区别

18、。Overload的方法是否可以改变返回值的类型?方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型

19、。20、error和exception有什么区别?error 表示恢复不是不可能,但很困难的情况下的一种严重问题。比如说内存溢,网络故障等。不可能指望程序能处理的情况。 exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,就不会发生的情况。程序可以捕获到这些异常,并进行处理。21、abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?都不能任何static,private的方法都隐式的为final的,这也可以直接解释为什么不能和abstract混用22、接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承实体类(concreteclass)?接口可以继承抽象类可以实现接口抽象类可以继承实体类 23、运行时异常与一般异常有何异同异常表示程序运行过程中可能出现的非正常状态,如读取文件时找不到文件,这类异常必须捕获运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。如空指针、除以零,这类异常可以不需要捕获24、说出一些常用的类,包,接口,请各举5个常用包:java.lang、java.util、java.io、java.sql、、java

温馨提示

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

评论

0/150

提交评论