1、Java笔试题+答案资料仅供参考Java笔试题 1.J2EE是什么? 答:Je22是Sun公司提出的多层(multi-diered),分布式(distributed),基于组件(component-base)的企业级应用模型(enterpriese application model).在这样的一个应用系统中,可按照功能划分为不同的组件,这些组件又可在不同计算机上,而且处于相应的层次(tier)中。所属层次包括客户层(clietn tier)组件,web层和组件,Business层和组件,企业信息系统(EIS)层。 2.J2EE是技术还是平台还是框架? 答:J2EE本身是一个标准,一个为企业分
2、布式应用的开发提供的标准平台。 J2EE也是一个框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技术。 3.MVC的各个部分都有那些技术来实现?如何实现? 答:MVC是ModelViewController的简写。Model 代表的是应用的业务逻辑(经过JavaBean,EJB组件实现), View 是应用的表示面(由JSP页面产生),Controller 是提供应用的处理过程控制(一般是一个Servlet),经过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件能够进行交互和重用。 4.STRUTS的应用(如STRUTS架构) 答:Struts是采用Java
3、 Servlet/JavaServer Pages技术,开发Web应用程序的开放源码的framework。 采用Struts能开发出基于MVC(Model-View-Controller)设计模式的应用构架。 Struts有如下的主要功能: 一.包含一个controller servlet,能将用户的请求发送到相应的Action对象。 二.JSP自由tag库,而且在controller servlet中提供关联支持,帮助开发员创立交互式表单应用。 三.提供了一系列实用对象:XML处理、经过Java reflection APIs自动处理JavaBeans属性、国际化的提示和消息。 5.WEB
4、SERVICE名词解释。JSWDL开发包的介绍。JAXP、JAXM的解释。SOAP、UDDI,WSDL解释。 答:Web ServiceWeb Service是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得Web Service能与其它兼容的组件进行互操作。 JAXP(Java API for XML Parsing) 定义了在Java中使用DOM, SAX, XSLT的通用的接口。这样在你的程序中你只要使用这些通用的接口,当你需要改变具体的实现时候也不需要修改代码。 JAXM(Java API for XML Messaging) 是为SOAP通信提供访问
5、方法和传输机制的API。 WSDL是一种 XML 格式,用于将网络服务描述为一组端点,这些端点对包含面向文档信息或面向过程信息的消息进行操作。这种格式首先对操作和消息进行抽象描述,然后将其绑定到具体的网络协议和消息格式上以定义端点。相关的具体端点即组合成为抽象端点(服务)。 SOAP即简单对象访问协议(Simple Object Access Protocol),它是用于交换XML编码信息的轻量级协议。 UDDI 的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service
6、注册,以使别的企业能够发现的访问协议的实现标准。 6.C/S 与 B/S 区别: 答:有如下八个方面的不同: (1)硬件环境不同: C/S 一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再经过专门服务器提供连接和数据交换服务. B/S 建立在广域网之上的, 不必是专门的网络硬件环境,例与电话上网, 租用设备. 信息自己管理. 有比C/S更强的适应范围, 一般只要有操作系统和浏览器就行 (2)对安全要求不同 C/S 一般面向相对固定的用户群, 对信息安全的控制能力很强. 一般高度机密的信息系统采用C/S 结构适宜. 能够经过B/S发布部分可公开信息. B/S 建立在广域网之上, 对安
7、全的控制能力相对弱, 可能面向不可知的用户。 ()对程序架构不同 C/S 程序能够更加注重流程, 能够对权限多层次校验, 对系统运行速度能够较少考虑. B/S 对安全以及访问速度的多重的考虑, 建立在需要更加优化的基础之上. 比C/S有更高的要求 B/S结构的程序架构是发展的趋势, 从MS的.Net系列的BizTalk Exchange 等, 全面支持网络的构件搭建的系统. SUN 和IBM推的JavaBean 构件技术等,使 B/S更加成熟. ()软件重用不同 C/S 程序能够不可避免的整体性考虑, 构件的重用性不如在B/S要求下的构件的重用性好. B/S 正确多重结构,要求构件相对独立的功
8、能. 能够相对较好的重用.就入买来的餐桌能够再利用,而不是做在墙上的石头桌子 ()系统维护不同 C/S 程序由于整体性, 必须整体考察, 处理出现的问题以及系统升级. 升级难. 可能是再做一个全新的系统 B/S 构件组成,方面构件个别的更换,实现系统的无缝升级. 系统维护开销减到最小.用户从网上自己下载安装就能够实现升级. ()处理问题不同 C/S 程序能够处理用户面固定, 而且在相同区域, 安全要求高需求, 与操作系统相关. 应该都是相同的系统 B/S 建立在广域网上, 面向不同的用户群, 分散地域, 这是C/S无法作到的. 与操作系统平台关系最小. ()用户接口不同 C/S 多是建立的Wi
9、ndow平台上,表现方法有限,对程序员普遍要求较高 B/S 建立在浏览器上, 有更加丰富和生动的表现方式与用户交流. 而且大部分难度减低,减低开发成本. ()信息流不同 C/S 程序一般是典型的中央集权的机械式处理, 交互性相对低 B/S 信息流向可变化, B-B B-C B-G等信息、流向的变化, 更像交易中心。 7.什么是JNDI 答:(Java Naming & Directory Interface)JAVA命名目录服务。主要提供的功能是:提供一个目录系统,让其它各地的应用程序在其上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能。 8.什么是JMS 答:(Java Mes
10、sage Service)JAVA消息服务。主要实现各个应用程序之间的通讯。包括点对点和广播 9.什么是JTA 答:(Java Transaction API)JAVA事务服务。提供各种分布式事务服务。应用程序只需调用其提供的接口即可。 10.开发中都用到了那些设计模式?用在什么场合? 答:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。经过这种方式,你能够无数次地使用那些已有的解决方案,无需在重复相同的工作。主要用到了MVC的设计模式。用来开发JSP/Servlet或者J2EE的相关应用。简单工厂模式等。 11.、j2ee常见的设计模式?说明工厂模式。 答
11、:Java中的23种设计模式: Factory(工厂模式), Builder(建造模式), Factory Method(工厂方法模式), Prototype(原始模型模式),Singleton(单例模式), Facade(门面模式), Adapter(适配器模式), Bridge(桥梁模式), Composite(合成模式), Decorator(装饰模式), Flyweight(享元模式), Proxy(代理模式), Command(命令模式), Interpreter(解释器模式), Visitor(访问者模式), Iterator(迭代子模式), Mediator(调停者模式), Me
12、mento(备忘录模式), Observer(观察者模式), State(状态模式), Strategy(策略模式), Template Method(模板方法模式), Chain Of Responsibleity(责任链模式) 工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类能够根据提供的数据生成一组类中某一个类的实例,一般这一组类有一个公共的抽象父类而且实现了相同的方法,可是这些方法针对不同的数据进行了不同的操作。首先需要定义一个基类,该类的子类经过不同的方法实现了基类中的方法。然后需要定义一个工厂类,工厂类能够根据条件生成不同的子类实例。当得到子类的实例后,开发人员能够
13、调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。 12.UML方面 答:标准建模语言UML。用例图,静态图(包括类图、对象图和包图),行为图,交互图(顺序图,合作图),实现图 13.RMI RMI 指的是远程方法调用 (Remote Method Invocation)。它是一种机制,能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法。能够用此方法调用的任何对象必须实现该远程接口。调用这样一个对象时,其参数为 marshalled 并将其从本地虚拟机发送到远程虚拟机(该远程虚拟机的参数为 unmarshalled)上。该方法终止时,将编组来自远程机的结果
14、并将结果发送到调用方的虚拟机。如果方法调用导致抛出异常,则该异常将指示给调用方。 JAVA 基础 1.如何获得数组的长度? 数组名.length 2.访问修饰符“public/private/protected/缺省的修饰符”的使用类? public : 公共,均可访问 private: 私有的,同一个java类中能够访问.子类不能访问. protected: 同一个包中的类都可访问.子类能够访问. 缺省,friendly :当前类,同一个包,都能够访问. 作用域 当前类 同一package 子孙类 其它package public protected friendly private 3.A
15、nonymous Inner Class (匿名内部类) 是否能够extends(继承)其它类,是否能够implements(实现)interface(接口)? 匿名内部类是没有名字的内部类,不能继承其它类,但一个内部类能够作为一个接口,由另一个内部类实现. 一、由于匿名内部类没有名字,因此它没有构造函数。因为没有构造函数,因此它必须完全借用父类的构造函数来实例化,换言之:匿名内部类完全把创立对象的任务交给了父类去完成。 二、在匿名内部类里创立新的方法没有太大意义,但它能够经过覆盖父类的方法达到神奇效果,如上例所示。这是多态性的体现。 三、因为匿名内部类没有名字,因此无法进行向下的强制类型转换
16、,持有对一个匿名内部类对象引用的变量类型一定是它的直接或间接父类类型。 new 匿名类 匿名类是不能有名称的类,因此没办法引用它们。必须在创立时,作为new语句的一部分来声明它们。 这就要采用另一种形式的new语句,如下所示: new 这种形式的new语句声明一个新的匿名类,它对一个给定的类进行扩展,或者实现一个给定的接口。它还创立那个类的一个新实例,并把它作为语句的结果而返回。要扩展的类和要实现的接口是new语句的操作数,后跟匿名类的主体。 如果匿名类对另一个类进行扩展,它的主体能够访问类的成员、覆盖它的方法等等,这和其它任何标准的类都是一样的。如果匿名类实现了一个接口,它的主体必须实现接口
17、的方法。 注意匿名类的声明是在编译时进行的,实例化在运行时进行。这意味着for循环中的一个new语句会创立相同匿名类的几个实例,而不是创立几个不同匿名类的一个实例。 从技术上说,匿名类可被视为非静态的内部类,因此它们具有和方法内部声明的非静态内部类一样的权限和限制。 如果要执行的任务需要一个对象,但却不值得创立全新的对象(原因可能是所需的类过于简单,或者是由于它只在一个方法内部使用),匿名类就显得非常有用。匿名类特别适合在Swing应用程序中快速创立事件处理程序。 exp: return new Contents() private int i = 11; public int value()
18、 return i; ; 这种奇怪的语法要表示的意思是:“创立从Contents衍生出来的匿名类的一个对象”。由new表示式返回的句柄会自动上溯造型成一个Contents句柄。匿名内部类的语法其实要表示的是: class MyContents extends Contents private int i = 11; public int value() return i; return new MyContents(); 若试图定义内部类,并想使用在匿名内部类外部定义的一个对象,则编译器要求外部对象必须是final属性. public class Parcel9 public Destinat
19、ion dest(final String dest, final float price) return new Destination() private int cost; / Instance initialization for each object: cost = Math.round(price); if(cost 100) System.out.println(Over budget!); private String label = dest; public String readLabel() return label; ; public static void main
20、(String args) Parcel9 p = new Parcel9(); Destination d = p.dest(Tanzania, 101.395F); 4.static nested class 和 inner class的不同? nested class在c+中是嵌套类,inner class在java中是内部类.不同就是在于是否有指向外部的引用上.静态内部类意味着创立一个static内部类的对象,不需要一个外部类对象;不能从一个static内部类的一个对象访问到一个外部类的对象. 5.&和&的区别 &是位运算符,表示按位与运算;&是逻辑运算符,表示逻辑与(and) 6.C
21、ollection和Collections的区别 collection是集合类的上级接口,继承与它的接口主要是set和list 其中list必须以特定的顺序容纳元素;而一个set不能包含重复的元素. 映射(Map)一系列键-值对.能够返回自己键的一个set,一个包含自己值的list,或者包含自己(键-值)正确一个list. 均可构建自己的重复器. collections类是针对集合类的一个帮助类.它提供一系列的静态方法对各种集合的搜索,排序,线程安全化等操作. public class SimpleCollection public static void main(String args)
22、Collection c = new ArrayList(); for(int i = 0; i 10; i+) c.add(Integer.toString(i); Iterator it = c.iterator(); while(it.hasNext() System.out.println(it.next(); 7.什么时候用assert assertion(断言)在软件开发中是一种常见的调试方式,很多开发语言中都支持这种机制。在实现中,assertion就是在程序中的一条语句,它对一个boolean表示式进行检查,一个正确程序必须保证这个boolean表示式的值为true;如果该值为
23、false,说明程序已经处于不正确的状态下,系统将给出警告或退出。一般来说,assertion用于保证程序最基本、关键的正确性。assertion检查一般在开发和测试时开启。为了提高性能,在软件发布后,assertion检查一般是关闭的. 8.String s = new String(xyz);创立了几个String Object* 两个,一个字符对象,一个字符对象引用对象 9.math.round(11.5)和math.round(-11.5) 前者等于12,后者等于-11.round方法返回与参数最接近的长整数.参数加0.5,求其floor 10. short s1 = 1;s1 = s
24、1+1;是否有错误? short s1 = 1;s1 += 1;是否有错误? 前者s1+1返回一个int型,需要强制类型转换. 后者正确. 11.java种有没有goto? 有,为保留字.可是尚未使用. 12.Overload和Override的区别。Overloaded的方法是否能够改变返回值的类型? 答:方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding
25、)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被屏蔽了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是能够改变返回值的类型 12.Overload和Override的区别。Overloaded的方法是否能够改变返回值的类型? 答:方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的
26、名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被屏蔽了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是能够改变返回值的类型 这个说法是错误的,多态是一种运行时的行为,而不是编译时的行为。 Overriding属于运行时的行为,而Overloading是编译时的行为。 具体请参照 think in java中关于多态的描述13.Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用=还是equals
27、()? 它们有何区别 答:Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等 equals()和=方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值 14.给我一个你最常见到的runtime exception? 答:常见的运行时异常有如下这些 ArithmeticException(异常的运算条件), ArrayStoreException(向一个对象数组存放一错误类型的对象时)BufferOverflowException, BufferUnderflowExcep
28、tion, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException, ImagingOpException, IndexOutOfBoundsExceptio
29、n, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException. 15.error和e
30、xception有什么区别? 答:error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况 exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况 16.List, Set, Map是否继承自Collection接口 答: List,Set是,Map不是 17.abstract class和interface的区别 答:声明方法的存在而不去实现它的类叫虚拟类(abstract class).它用于创立一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况.不能创立abstract cl
31、ass的实例.可是能够声明一个abstract class变量,将其指向其具体子类的一个实例.不能有抽象构造函数或抽象静态方法.Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类能够在类中实现这些方法. 接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可经过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只能够定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种
32、接口的方法。然后,它能够在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。一般的动态联编将生效。引用能够转换到接口类型或从接口类型转换,instanceof 运算符能够用来决定某对象的类是否实现了接口. 接口是一个更纯的抽象类. 18.接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class) 答:接口能够继承接口。抽象类能够实现(implements)接口,抽象类可继承实体类,但前提是实体类必须有明确的构造函数 19.abstract的method是否可同时是static,是否可同
33、时是native,是否可同时是synchronized 答:都不能.其中synchronized:(同步.避免在你和别人同时访问一个属性的时候,属性的值发生不同步的问题.) native:(声明本地方法的关键字,能够经过声明的方法调用本地的动态链接库或者有C、C+等开发的函数。) 20.构造器Constructor是否可被override(构造函数) 答:构造器Constructor不能被继承,因此不能重写Overriding,但能够被重载Overloading 1). 构造器不能是native,final,static,synchronized 的,能够是public,private,或什么
34、都没有。 2). 构造器函数里能够写return呢,但后面什么都不许有(包括null) 3). 构造器不能返回值. 但如果有个构造器返值了,它就不是构造器喽,只是个普通方法 4). super();this();这两个方法只能在构造方法里调用. 5). 成员变量声明时候赋值,比构造函数还早. 21.是否能够继承String类 答:String类是final类故不能够继承 22.try 里有一个return语句,那么紧跟在这个try后的finally 里的code会不会被执行,什么时候被执行,在return前还是后 答:会执行,在return前执行 23.用最有效率的方法算出2乘以8等於几 答:
35、2 3 24.两个对象值相同(x.equals(y) = true),但却可有不同的hash code,这句话对不对 答:不对,有相同的hash code 在C+中,每个类多有地址。 java也一样,不过hash code不是地址,而是一个标识对象用的。(个人认为) 每个对象的hash code是不一样的,Object的默认hash code记得是按引用地址的。 对于String例外,是按String内容输出hash code的,这样能够用equals()来比较String的 内容是否相等了,而不是地址 在 Java 应用程序执行期间,在同一对象上多次调用 hashCode 方法时,必须一致地
36、返回相同的整数,前提是对象上 equals 比较中所用的信息没有被修改。从某一应用程序的一次执行到同一应用程序的另一次执行,该整数无需保持一致。 如果根据 equals(Object) 方法,两个对象是相等的,那么在两个对象中的每个对象上调用 hashCode 方法都必须生成相同的整数结果。 以下情况不 是必须的:如果根据 equals(java.lang.Object) 方法,两个对象不相等,那么在两个对象中的任一对象上调用 hashCode 方法必定会生成不同的整数结果。可是,程序员应该知道,为不相等的对象生成不同整数结果能够提高哈希表的性能。 实际上,由 Object 类定义的 hash
37、Code 方法确实会针对不同的对象返回不同的整数。(这一般是经过将该对象的内部地址转换成一个整数来实现的,可是 JavaTM 编程语言不需要这种实现技巧。) 25.当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递 答:是值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容能够在被调用的方法中改变,但对象的引用是永远不会改变的. 26.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上 答:witch(expr1)中,
38、expr1是一个整数表示式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich 28.GC是什么? 为什么要有GC 答:GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。 29.float型float f=3.4是否正确? 答:不正确。精度不准确,应该用强制类
39、型转换,如下所示:float f=(float)3.4 30.介绍JAVA中的Collection FrameWork(包括如何写自己的数据结构)? 答:Collection FrameWork如下: Collection List LinkedList ArrayList Vector Stack Set Map Hashtable HashMap WeakHashMap Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements) Map提供key到value的映射. 31.抽象类与接口? 答:抽象类与接口都用于抽象
40、,可是抽象类(JAVA中)能够有自己的部分实现,而接口则完全是一个标识(同时有多重继承的功能) JAVA类实现序例化的方法是实现java.io.Serializable接口 Collection框架中实现比较要实现Comparable 接口和 Comparator 接口 32.STRING与STRINGBUFFER的区别。 答:STRING的长度是不可变的,STRINGBUFFER的长度是可变的。如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法 33.谈谈final,
41、finally, finalize的区别 答:final修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,能够保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载 finally再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话) fin
42、alize方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其它清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的 34.面向对象的特征有哪些方面 答:主要有以下四方面: 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承: 继承是一种联结类的层次模型,而且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类能够从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类能够从它的基类那里继承方法和实例变量,而且类能够修改或增加新的方法使之更适合特殊的需要。 3.封装: 封装是把过程和数据包围起来,对数据的访问只能经过已定义的界面。面向对象计算始于这个基本概念,即现实世界能够被描绘成一系列完全自治、封装的对象,