ImageVerifierCode 换一换
格式:DOC , 页数:33 ,大小:283.92KB ,
资源ID:8953601      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/8953601.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(面向对象程序设计JAVA复习题集.doc)为本站上传会员【仙人****88】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

面向对象程序设计JAVA复习题集.doc

1、班级学号_________________________ 姓名___________________ (第 页, 共 页) -------------密--------封--------线--------密--------封--------线--------密--------封--------线--------密--------封--------线--------密--------封--------线--------密--------封--------线--------密--------封--------线--------密--------封--

2、线------------ 一、选择 ( 2*15=30 分) (1)在Java中,负责对字节代码解释执行的是()。 A)垃圾回收器 B)虚拟机 C)编译器 D)多线程机制 (2)下列叙述中,正确的是() A)Java语言的标识符是区分大小写的 B)源文件名与public类名可以不相同 C)源文件扩展名为.jar D)源文件中public类的数目不限 (3)下列属于合法的Java标识符是 () A)_cat B)5books

3、 C)+static D)-3.14159 (4)在Java中,表示换行符的转义字符是 () A)\n B)\f C)'n' D)\dd (5)在Java中,由Java编译器自动导入,而无需在程序中用import导入的包是() A)java.applet B)java.awt C)java.util D)java.lang (6)在Java中,所有类的根类是 () A)java.lang.

4、Object B)java.lang.Class C)java.applet.Applet D)java.awt.Frame (7)在Java中,用Package语句说明一个包时,该包的层次结构必须是() A)与文件的结构相同 B)与文件目录的层次相同 C)与文件类型相同 D)与文件大小相同 (8)在读字符文件Employee.dat时,使用该文件作为参数的类是 () A)BufferReader B)DataInputStream C)DataOutout

5、Stream D)FileInputStream (9)下列构造方法的调用方式中,正确的是 () A)按照一般方法调用 B)由用户直接调用 C)只能通过new自动调用 D)被系统调用 (10)类Panel默认的布局管理器是 () A)GridLayout B)BorderLayout C)FlowLayout D)CardLayout (11)在Java中,能实现多重继承效果的方式是 (C) A)内部类 B)适配器

6、C)接口 D)同步 (12)int型public成员变量MAX_LENGTH,该值保持为常数100,则定义这个变量的语句是(D) A)public int MAX_LENGTH=100 B)final int MAX_LENGTH=100 C)public const int MAX_LENGTH=100 D)public final int MAX_LENGTH=100 (13)下列不是InputStream子类的是 (C) A)文件输入流FileInputStream (14)下列方法中可以用来创建一个新线

7、程的是 (C) A)实现java.lang.Runnable接口并重写start()方法 B)实现java.lang.Runnable接口并重写run()方法 :间接生成线程 C)实现java.lang.Thread类并重写run()方法 D)实现java.lang.Thread类并重写start()方法 (15)下列关于Java Application与Applet的说法中,正确的是(C) A)都包含main()方法 B)都通过“appletviewer”命令执行 C)都通过“javac”命令编译 D)都嵌入在HTML文件中执行 (16)当启动Ap

8、plet程序时,首先调用的方法是 (B) A)stop() B)init() C)start() D)destroy() (17)下列关于线程优先级的说法中,正确的是 (C) A)线程的优先级是不能改变的 B)线程的优先级是在创建线程时设置的 C)在创建线程后的任何时候都可以设置 D)B和C (18)当浏览器重新返回Applet所在页面时,将调用Applet类的方法是(A) A)start() B)init() C)s

9、top() D)destroy() (19)下列代码中,将引起一个编译错误的行是 (D) 1)public class Test{ 2) int m,n; 3) public Test() {} 4) public Test(int a) {m=a;} 5) public static void main(String args[]){ 6) Test t1,t2; 7) int j,k; 8) j=0;k=0; 9) t1=new Test(); 10) t2=new Test(j,k); //参数个数不对 11)

10、} 12)} A)第3行 B)第5行 C)第6行 D)第10行 (20)下列程序的功能是在监控台上每隔一秒钟显示一个字符串“Hello”,能够填写在程序中下划线位置,使程序完整并能正确运行的语句是(D) public class Test implements Runnable{ public static void main(String args[]){ Test t=new Test(); Thread tt=new Thread(t); tt.start(); } p

11、ublic void run(){ for(;;){ try{ ___________ ; }catch(____________ e){} System.put.println("Hello"); } } } A) sleep(1000) InterruptedException:线程长时间休眠,等待被中断 B) sleep(1000) InterruptedException C) Thread.sleep(1000) RuntimeException:运行过程出现错误,退出线程 D) Thread.sleep(1000) In

12、terruptedException (21)阅读下列代码后,正确的说法是 (A) public class Person{ int arr[]=new int[10]; public static void main(String args[]){ System.out.println(arr[1]); } } A) 编译时将产生错误:类方法不能使用示例变量 B) 编译时正确,运行时将产生错误 C) 输出零:类变量时 D) 输出空 (22)下面的哪些赋值语句是不正确的( A  ): A.float f=11.1;

13、 B.double d=5.3E12; C.double d=3.14159; D.double d=3.14D; (23)、下面关于变量及其范围的陈述哪些是不正确的( B  ): A.实例变量是类的成员变量 B.实例变量用关键字static声明 C.在方法中定义的局部变量在该方法被执行时创建 D.局部变量在使用前必须被初始化 (24)、下列关于修饰符混用的说法,错误的是( D ): A.abstract不能与final并列修饰同一个类:抽象类必需继承 B.abstract类中不可以有private的成员 :抽象类有非抽象方法 C

14、.abstract方法必须在abstract类中 D.static方法中能处理非static的属性 (25)、容器Panel和Applet缺省使用的布局编辑策略是(   A ): A、BorderLayout B、FlowLayout      C、GridLayout      D、CardLayout (26)、main方法是Java  Application程序执行的入口点,关于main方法的方法头以下哪项是合法的(  B  ): A、    public  static  void  main()   

15、 B、    public  static  void   main(String[ ]  args) C、    public  static int  main(String[ ]  arg) D、    public  void  main(String  arg[ ]) (27)、编译运行以下程序后,关于输出结果的说明正确的是 ( C   ):        public  class   Conditional{               public  static  void  main(String  args[  ]){     

16、                 int  x=4;                      System.out.println(“value  is  “+ ((x>4) ? 99.9 :9)); } } A、    输出结果为:value  is  99.99 B、    输出结果为:value  is  9 C、    输出结果为:value  is  9.0 :表达式数据类型为三项最大double。 D、    编译错误 (28) 关于以下application的说明,正确的是(  C  ): 1.  class   StaticStuff

17、 2. { 3.                  static  int  x=10; 4.                  static  { x+=5;} :静态块,创建对象先运行且只运行一次 5.                  public  static  void  main(String  args[ ]) 6.                  { 7.                       System.out.println(“x=” + x); 8.                  } 9.                  sta

18、tic  { x/=3;} 10.   } A、 4行与9行不能通过编译,因为缺少方法名和返回类型  B、 9行不能通过编译,因为只能有一个静态初始化器 C、 编译通过,执行结果为:x=5 D、编译通过,执行结果为:x=3 (29)、关于以下程序代码的说明正确的是(  D ): 1.class  HasStatic{ 2.    private  static  int  x=100; 3.    public  static  void  main(String  args[  ]){ 4.        HasStatic  hs1=new  H

19、asStatic(  ); 5.        hs1.x++; 6.        HasStatic  hs2=new  HasStatic(  ); 7.        hs2.x++; 8.        hs1=new  HasStatic( ); 9.        hs1.x++; 10.       HasStatic.x- -; 11.       System.out.println(“x=”+x); :类变量的内存共享 12.   } 13.} A、5行不能通过编译,因为引用了私有静态变量 B、10行不能通过编译,因为x是私有静态

20、变量 C、程序通过编译,输出结果为:x=103 D、程序通过编译,输出结果为:x=102 (30) Java应用程序经过编译后会产生一个以(B)为扩展名的字节码文件 A、.java B、.class C、.exe D、.html (31)、为名为pido的类书写一个无形式参数无返回值的方法method方法头,使得使用类名pido作为前缀就可以调用它,则该方法头的形式为( A ) A、static void method() B、public void method() C、final voi

21、d method() D、abstract void method() (32)、有如下程序段, 则执行以上程序段后,以下选项描述正确的是(D) String unset=null; System.out.println("Hello Pido! "); if(unset!=null && unset.length()>5) { System.out.println("Hello Pido! "); } A、运行时出现错误 B、编译正确但运行时空指针异常 C、编译时出现空指针异常 D、没有任何错误出现:每一项假,第二项不运行

22、 (33)、当程序动态添加或删除某些组件后,需要用到( C)方法 A、finalize(): 保护类GUI释放输入方法内容 B、 destory() C、validate() D、dispose():从窗口释放图形文本和系统资源 (34)、下列选项中不是MouseListener接口中的方法的是(A ) A、mouseMoved() B、mousePressed() C、mouseReleased() D、mouseClicked() (35)、Java语言不是( C ) A、高

23、级语言 B、编译型语言 C、结构化设计语言 D、面向对象设计语言 (36)、Jcreator是( B ) A、一种全新的程序语言 B、一种java程序开发辅助工具 C、一种由Java写成的浏览器 D、一种游戏软件 (37)、Java语言中创建一个对象使用的关键字为 ( C ) A、class B、interface C、new D、create (38)、对于可以独立运行的Java应用程序,下列( D )说法是正确的。

24、A、无须main方法 B、必须有两个main方法 C、可以有多个或零个main方法 D、必须有一个main方法 (39)、用abstract定义的类( D ) A、可以被实例化 B、不能派生子类 C、不能被继承 D、只能被继承 (40)以public修饰的类如:public class Car{…} 则Car( A ) A、可被其它程序包中的类使用 B、仅能被本程序包中的类使用 C、不能被任意其它类使用 D、不能被其它类继承 (41)、下述概念中不属于面向对象方

25、法的是( D )。 A.对象、消息     B.继承、多态      C.类、封装      D.过程调用 (42)下列关于构造方法的叙述中,错误的是(  C       ) A.Java语言规定构造方法名与类名必须相同 B.Java语言规定构造方法没有返回值,但不用void声明 C.Java语言规定构造方法不可以重载 D.Java语言规定构造方法只能通过new自动调用 (43)下列哪个类的声明是正确的?( D ) A.abstract final class HI{}     B.abstract private m

26、ove(){} :不是抽象方法 ,方法体{}   C.protected private number;     D.public abstract class Car{} (44)类Test1定义如下, 将以下哪种方法插入行3是不合法的( B ) 1.public  class  Test1{ 2.     public  float  aMethod(float  a,float  b){   }; 3.                4.}        A、public  float  aMethod(float  a, float  b,float  c

27、{  } B、public  float  aMethod(float  c,float d){  } C、public  int  aMethod(int  a, int b){  } D、private float aMethod(int a,int b,int c){  } (45)某一个子类要继承一个父类,要使用关键字( B ) A、import B、extends C、implements D、java (46)、某一个子类要实现一个父接口,要使用关键字( c ) A、import

28、 B、extends C、implements D、java (47)、在JDK环境下编译JAVA原程序使用的命令是( b ) A、java B、javac C、jvm D、tomcat (48)、以下关于接口和类的说法正确的是( c ) A、接口和类都可以实现多重继承 B、子类可以继承多个父类 C、子类可以实现多个接口 D、一个子类不能同时继承某一个父类和实现某一个接口 (49)、嵌入到网页中运行的java小程序称为applet,嵌入到网页中的html

29、标签是( C ) A、code:引入程序的关键字 B、body C、applet:标签对中间是程序文件名 D、html (50)、假设现在有一个类,名称为ceshi,现在要声明和创建一个ceshi类型的对象变量ceshiA,则下述正确的是( d ) A、ceshi ceshiA; B、ceshi ceshia=new ceshi; C、ceshi ceshiA=new ceshi; D、ceshi ceshiA=new ceshi() (51)、类中可以定义独立于方法

30、的静态成员变量,这种变量其作用域是属于( c ) A、类中的public方法 B、类中的private方法 C、独立于所有方法,只和该类声明时使用的修饰符有关 D、没有确切的范围 (52)、在JAVA中实现图形用户界面可以使用组建AWT和组件( B ) A、swing:包 B、Swing C、JOptionPane D、import (53)、friendly(缺省权限)修饰符修饰的成员变量或方法,其作用域是( a )内 A、包 B、类 C、方法

31、 D、程序文件 (54)、一个非抽象子类,如果要实现某个接口,则( a ) A、必须实现该接口中的所有抽象方法 B、可以实现部分抽象方法 C、可以不实现任何抽象方法 D、无所谓 (55)、下列关于关键字this和super的说法正确的是( c ) A、this是调用父类的方法和变量 B、super是调用本类中的方法 C、super是调用父类的方法和变量 D、没有区别 (56)、下列关于构造方法的说法正确的是( a ) A、构造方法必须是和类的名称相同 B、每一个类都必须显示声明自己的构造方

32、法 C、构造方法不能进行重载 D、子类不能使用父类的构造方法 (57)、在JAVA中,一般菜单格式包含有下列类对象(d ) A、JMenuBar B、JMenu C、JMenuItem D、JMenuBar、JMenu、JmenuItem (58)、JAVA中的“委托事件模型”主要包括产生事件的对象、事件对象和( b ) A、事件源 B、事件处理方法 C、监听者对象 D、ActionListener (59)、JAVA中提供了多种布局对象类。其中使用卡片式布局的是( d

33、 ) A、FlowLayout B、BorderLayout C、GridLayout D、CardLayout (60)、下列 ( A ) 不属于AWT布局管理器。 A、 BoxLayout     B、GridLayout       C、BorderLayout     D、FlowLayout (61)、类的3个重要特征是类的封装、多态和( c ) A、 实现 B、重写 C、 继承 D、重载 (

34、62)、Java语言有许多优点和特点,下列选项中,( B ) 反映了Java程序并行机制的特点。 A、安全性     B、多线程     C、跨平台     D、可移植 (63)、下面   ( C  )    不是创建数组的正确语句。 A)float f[][]=new float[6][6];     B)float f[]=new float[6]; C)float f[][]=new float[][6];     D)float [][]f=new float[6][];        

35、     (64)、假设A类有如下定义,设a是A类的一个实例,下列语句调用 (C) 是错误的。 class A { int i; static String s;     void method1() {   }     static void method2()  {   } } A、System.out.println(a.i);      B、a.method1();   C、A.method1();                D、A.method2() (65), 下列叙述中,错误的是 ( B )            A、File

36、类能够存储文件                 B、File类能够读写文件         C、File类能够建立文件                 D、File类能够获取文件目录信息   (66)、在Java中,关于final关键字的说法正确的是 (  A)         A、如果修饰变量,则一旦赋了值,就等同一个常量 B、如果修饰类,则该类只能被一个子类继承 C、如果修饰方法,则该方法能在子类中被覆盖 D、如果修饰方法,则该方法所在的类不能被继承 (67)、Java程序中读入用户输入的一个值,要求创建一个自定义的异常,如果输入值大于10,使用thr

37、ow语句显式地引发异常,异常输出信息为“something’s wrong!”,语句为      ( C )       A、if (I>10) throw Exception(“something’s wrong!”); B、if (I>10) throw Exception e (“something’s wrong!”); C、if (I>10) throw new Exception(“something’s wrong!”); D、if (I>10) throw new Exception e (“something’s wrong!”); (68)

38、在Java中,下面关于包的陈述中正确的是   ( A )          A、包的声明必须是源文件的第一句代码 B、包的声明必须紧跟在import语句的后面 C、只有公共类才能放在包中 D、不可以将多个源文件中的类放在同一个包中 (69)、在Java中,要想使只有定义该类所在的包内的类可以访问该类,应该用 ( A ) 关键字。 A、不需要任何关键字 B、private C、final D、protected (70)、JAV

39、A中,为了辨别用户关闭窗口的时间,要实现监听器接口(C)             A、MouseListener B、ActionListener C、WindowListener D、以上都要  (71)监听事件和处理事件(A) A)都由Listener完成   B)都由相应事件Listener处登记过的构件完成   C)由Listener和构件分别完成   D)由Listener和窗口分别完成 (72)处理对象传输的接口是 (A) A)Serializab

40、le B)Cloneable C)ItemListener D)ActionListener (73)可以使当前同级线程重新获得运行机会的方法是 (B) A)sleep() B) join() C) jield D) interrupt() (74)无法对TextField 对象进行事件监听和处理的是 (C) A)ActionListener B)FacusListener C)MouseMotionListener D)ChangeListener

41、 (75) 在Java中,若要使用一个包中的类时,首先要求对该包进行导入,其关键字是(A) A)import B)package C)include D)packet 二、 填空 ( 1*20= 20 分) 1,Java 2 platform分成三个版本套件____J2SE_____、______J2EE__、________J2ME______。 2、Arrays类的________sort____方法可以对数组进行排序。 3、________In

42、terface___关键字用来定义一个接口。 4、在java中,把数据类型分为两大类为____基本类型____和______对象类型___。 5、若在java程序中设置包语句,则使用关键字________package______。若要导入其他包中的类则需要使用关键字___________import_______。 6、(在同一包中)子类不能继承父类中的____private__ 成员,除此之外,其它所有的成员都可以通过继承变为子类的成员。 7、Java不直接支持多继承,但可以通过_____接口_____实现多继承。 8、当实现Runnable接口时,要实现的方法是____

43、run()______ 。 9、java接口内的方法都是公共的、_____抽象_______的,实现接口就要实现接口内的所有方法。 10、java语言的_____内部类 可以使用它所在类的静态成员变量和实例成员变量,也可以使用它所在方法中的局部变量。 11、继承性与多态性是面向对象的核心特征。 11、下列程序构造了一个Swing Applet,请在下划线处填入正确的代码 Import javax.swing.*; Import java.awt.*; Public class SwingApplet extends Japplet

44、 { Jlabel l = new Jlabel (“This is a Swing Applet.”); Public void init(){ Container contentPane = getContentPane(); contentPane.add(1); } } 12、请在下划线处填入代码,是程序正常运行并且输出“Hello!” Class Test extends Thread { Public static void main (String[] arge){ Test t = new Test(); t.start(); }

45、 Public void run(){ System.out.println(“Hello!”); } } 13、创建一个名为 MyPackage 的包的语句是:__Package  MyPackage _______________   。 14、下面是以命令行参数形式输入double型数据的程序,并对出现的数组越界异常(IndexOutOfBoundsException异常)和数据格式错误异常(NumberFormatException异常)进行捕获处理。请将程序补充完整。 class Catch2Demo { public static void main(St

46、ring args[]) { ______try ____ { String s=args[0]; double d=Double.parseDouble(s); System.out.println("d的平方为:"+d*d); } catch(IndexOutOfBoundsException e) { System.out.println("没有输入命令行参数"); e.printStackTrace(); } ________catch(NumberFormatException e)______ { System.out.print

47、ln("没有输入正确的数据"); e.printStackTrace();return; } } } 15、运行HelloApp .java Applet小程序的网页如下。 //java应用程序标签 // 超文本文件标签 16、对圆进行数据抽象,并建立类。 class point{ // 定义点类point int x0; int y0; point(int x,i

48、nt y){ //构造方法 this.x0=x; this.y0=y;} } class circle{ // 定义圆类circle point center; int radius; ___circle_____(point p1,int r1){ //构造方法 this.center=p1; this.radius=r1;} double area(){ // 定义园面积 return Math.PI*radius*radius;} } 17、建立抽象类figure,并进一步建立矩形类。 pu

49、blic abstract class figure{ public abstract float area(); public abstract float circumference();} public class rectangle __implement____ figure{ public float d; public rectangle( ) {d=11.4;} public float __area__( ) {return d*d;} public float circumferenc

50、e( ) {return 2*d;} } 18、封装可以限定类中的成员只被该类本身访问: package p1; public class ori{ // 要求限定类中的成员只被该类本身访问 ___private____ int n_p=2; void Access(){ System.out.println(“n_p=”+n_p);} } 19、字符串转化成简单数据类型。 public class StringToObject{ public static void main(String args[]) { i

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服