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

下载本文档

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

文档简介

1、第三章:面向对象作业1 基础问题1.1 简述面向对象的特点答:面向对象的特征有封装、继承和多态。封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式;子类继承了父类,就继承了父类的方法和属性,在子类中,可以使用父类中定义的方法和属性,也可以创建新的数据和方法;面向对象的多态性体现为方法的重载和重写,在Java中,子类的对象可以替代父类的对象使用。1.2 java类是否可以多继承,怎么实现多继承?答:Java只支持单继承,不允许多重继承。有了接口(interface),就可以得到多重继承的效果。1.3 abstract class 和interface 有什么区别?答:abstract cl

2、ass是用来模型化那些父类无法确定全部实现,而是由其子类提供具体实现的对象的类。接口(interface)是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。1.4 int 和 Integer 有什么区别?答:int是基本数据类型,而Integer是引用类型包装类。包装类Integer使得基本数据类型int的数据变成了类,有了类的特点,可以调用类中的方法。1.5 abstract 的method 是否可同时是static,是否可同时是native,是否可同时是synchronized?答:abstract 的method 不能被static、native和synch

3、ronized修饰, abstract 的method 抽象方法只能被public或protected修饰,其他修饰符皆不可以。1.6方法重载(overload)必须满足_BCE_。A. 在不同class中定义的方法 B.在同一类型中定义的方法C. 方法名必须相同 D.返回类型必须相同E. 参数一定不同 F.参数可以相同1.7 重载(overload)和重写(overried,有的书也叫做“覆盖”)的区别?Overload的方法是否可以改变返回值的类型?构造器Constructor是否可被override?答:重载与重写的区别:重写是子类的方法覆盖父类的方法,要求方法名和参数都相同,而重载必须

4、具有不同的参数列表;重写的返回的类型必须一直与被重写的方法的返回类型相同,重载可以有不责骂的返回类型,只要参数列表不同就可以了;重写访问修饰符的限制一定要大于被重写方法的访问修饰符,重载可以有不同的访问修饰符;重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常,重载可以抛出不同的异常。Overload的方法可以改变其返回值的类型。构造器Constructor不能被继承,因此不能重写Overriding。1.8 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?为什么?答:是值传递。Java中都是由值传

5、递参数的,当一个对象实例作为一个参数被传递到方法中时,参数的值就是该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是不会改变的。1.9 接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?答:接口可以继承其它接口。抽象类是可以实现(implements)接口。当实体类有构造函数时可以被抽象类继承。1.10 Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?答:匿名内部类不能继承其它类,但一个内部类

6、可以作为一个接口,由另一个内部类实现。1.11谈谈final, finally, finalize的区别答:final标记的类不能被继承,标记的方法不能被子类重写,标记的变量即称为常量;finally 块再异常处理时提供执行任何清除操作。如果抛出一个异常,那么相匹配的catch子句就会执行,然后控制就会进入 finally 块;Java中允许finalize()方法在垃圾收集器将对象从内存中清除之前做必要的清除工作。这个方法是由垃圾收集器在确定对象没有被引用时对对象调用的。它是在Object类中定义的,因此所有类都继承了它。子类覆盖了finalize()方法以整理系统资源或执行其他工作。1.1

7、2 Static Nested Class 和 Inner Class的不同答:静态内部类是被声明为静态的内部类,它不能使用外层类的非静态的成员变量,内部类中的成员不能声明为static的,只有在外部类或static的内部类中才可声明static成员;静态内部类可以不依赖外部类来实例化,而内部类需要在外部类实例化后才能实例化。2 代码分析2.1 作用域public,private,protected,以及不写时的区别。辨析下列代码段是否正确答:不正确。当有public、protected、private修饰时有错误,Java权限修饰符public、protected、private用来限定对类

8、成员的访问权限,此处使用private修饰s中是错误的。当不写时正确。2.2 哪个选项和show函数重载class Demo void show(int a,int b,float c)(A、C、D)A.void show(int a,float c,int b) B.void show(int a,int b,float c)C.int show(int a,float c,int b)return a; D.int show(int a,float c)return a;2.3 分析下面那些函数可以存在于Demo的子类中。并写出错误答案错误的原因,用单行注释的方式。class Demo i

9、nt show(int a,int b)return 0;A.public int show(int a,int b)return 0;/ B.private int show(int a,int b)return 0;/ C.private int show(int a,long b)return 0;/ D.public short show(int a,int b)return 0;/ E.static int show(int a,int b)return 0;/ 答:(A)可以存在于Demo的子类中。子类对show函数的重写,必须和父类中具有相同的方法名称、参数列表和返回值类型;重写

10、show函数不能使用比父类的show函数更严格的访问权限;重写的show函数必须和父类的show函数同时为static的,或同时为非static的。2.4 下列程序能否编译通过,为什么?(1) 答:不能编译通过,因为final修饰的变量必须在定义的同时中显式赋值,然后才能使用。(2) 答:程序不能编译通过,抽象类的方法只声明,实现部分由它的子类来实现,此处应将去掉。(3)答:可以编译通过,且方法addOne设置输出得i的值为0。(4)答:不能编译通过,类的方法不能直接调用。(5)答:不能通过。在执行System.out.println(x)时,接口类A和类B均有属性x,产生歧义。2.4. 写出

11、结果。(关于参数传递)(1) (2) (1) 运行结果:4;由于Test1类的leftshift方法是静态的,只能操作静态的变量。所以i+=j语句没有被执行。(2) 运行结果:1。(3) 答:输出结果为:0 1 0 1 1。(4) 答:运行结果为:i = 10 i = 10。2.5. 定义类A 和类B 如下(类的继承)(1) 若在应用程序的main 方法中有以下语句:A a=new A();a.show();则输出的结果如何?答:输出结果为:Class A:a = 1d = 2.0。(2) 若在应用程序的main 方法中定义类B 的对象b:A b=new B();b.show();则输出的结果

12、如何?答:输出结果为:Class A:a = 1d = 2.0 Class B:a = 3.0d=Java program.2.6 写出下面程序的运行结果。(关于static)答:输出结果为:4。2.7 补足代码,使程序可以编译通过或者完成特定功能。(1) 采用匿名内部类,补足代码interface Testvoid func();class Demopublic static void main(String args)/补足代码;(匿名内部类)new Demo().show(new Test()public void func() System.out.println(“implement for func););void show(Test t)t.func();(2) 补足compare函数内的代码,不许添加其他函数。class Circleprivate double radius;public Circle(double r)radius=r;public Circle compare(Circle cir)/程序代码if(this.radiuscir.radius)return this;return cir;/return (this.radiuscir.radius)?this: c

温馨提示

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

评论

0/150

提交评论