学习Java第二天

自己编辑了几个代码以及老师讲解了课本内容

1.1面向对象语言的五个基本特性
(1)万物皆为对象(2)程序是对象的集合,它们通过发送消息来告知彼此所要做的(3)每个对象都有自己的 由其他对象所构成 的存储(4)每个对象都有其类型,每个对象都是某个类(class)的一个实例(instance)(5)某一特定类型的所有对象都可以接收同样的消息 对象具有状态、行为和标识 三个特征
1.2 每个对象都有一个接口
对象都是唯一的,但同时具有相同的特性和行为的对象所归属的类的一部分。每一个对象都属于定义了特性和行为的某个特定的类(class)。类描述了具有相同特性(数据元素)和行为(功能)的对象集合,类实际上是一个数据类型。程序设计挑战就是在问题空间的元素和解空间的对象之间创建一对一的映射。 接口(方法)确定了对某一特定对象所能发出的请求,决定接口的便是类型。 过程(方法)概括为:向某个对象“发送消息”(产生请求),这个对象便知道此消息的目的,然后执行对应的程序代码。 对象的创建: 类名 对象名(引用)=new 类的构造过程(方法);
1.3 每个对象都提供服务
程序本身将向用户提供服务,它将通过调用其对象提供的服务来实现这一目的。对象即为“服务提供者”。(好处:提高内聚性)
1.4 被隐藏的具体实现
类的创建者:构建类类只向客户端程序员暴露必需的部分,而隐藏其他部分,隐藏部部分客户端程序员不能访问客户端程序员:收集各种用来实现快速应用开发的类访问控制符存在原因:(1)让客户端程序员无法触及不应该触及的部分(2)允许类设计者改变内部的工作方式而不用担心影响到客户端程序员Java 用于类的内部设定边界:(访问指定词)publicprotected 默认的访问控制(包访问权限)private
1.5 复用具体实现
代码复用是面向对象程序设计语言所提供的最了不起的优点之一。最简单的代码复用某个类的方式就是直接使用类创建不同的对象,也可以创建一个成员对象。组合:新的类可以由任意数量、任意类型的其他对象以任意方式可以实现新的类中想要的功能的方式组成,这就是组合的概念。组合:has-a(拥有)关系。继承:is-a和is-like-a的关系
1.6 继承
基类(超类或父类)导出类(继承类或子类)继承不仅包括现有类型的所有成员(private 成员被隐藏,不可访问),而且复制了基类的接口。基类与导出类产生差异的方法:一是 添加新方法;二是 覆盖(overriding)基类方法 称为重写继承有: “是一个”与“像是一个”关系“是一个”(is-a)视为纯粹替代,称为“替代关系”。“像是一个”(is-like-a)具有旧类的接口,还包含其他方法。
1.7 伴随多态的可互换对象
前期绑定:编译器将产生对具体函数名字的调用,而运行时,将这个调用解析到将要被执行代码的绝对地址。后期绑定:Java 使用一小段特殊的代码来替代绝对地址调用,这段代码中存储的信息来计算方法体的地址。(默认行为)向上转型(upcasting)把导出类看做是它的基类的过程。
1.8 单根继承结构
终极基类的名字是 Object单根继承的优点:一是保证所有对象具有某些功能(Object 所有方法);二是所有对象可以很容易地在堆上创建;三是简化参数传递。
1.9 容器
容器是在任何需要的时候都可以扩充自己以容纳你置于其中的所有东西。(List、Map、Set 以及诸如队列、树、堆栈等)使用不同容器的原因:一是不同容器提供了不同的接口和外部行为;二是不同容器对于某些操作具有不同的效率。1.9.1 参数化类型Java SE5 之前通过存储 Object 的容器可以存储任何东西,使得容器被复用,缺点是:当从容器取出对象时,还是必须要以某种方式记住这些对象究竟是什么类型,这样才能执行向下转型(除非确切知道所要处理的对象的类型,否则向下转型是不安全的)。解决方案称为参数化类型机制,就是一个编译器可以自动定制作用于特定类型上的类。
1.10 对象的创建和生命期
使用对象时,最关键问题之一便是它们的生成和销毁方式。对象数据存储位置:一是将对象置于堆栈或静态存储区域(效率高,灵活性差);二是堆(heap)的内存池中动态创建对象(存储空间运行时动态管理,需要大量时间在堆中分配空间)。Java 采取动态内存分配方式。对象的生命周期:Java 提供了被称为“垃圾回收器”的机制,可以自动发现对象何时不再被使用,并继而销毁它。
1.11 异常处理:处理错误
异常是一种对象,它从出错地点被“抛出”,并被专门设计用来处理特定类型错误的相应的异常处理器“捕获”。异常作用就是提供了一种从错误状态进行可靠恢复的途径。
1.12 并发
编程并发的概念就是把问题切分成多个可独立运行的部分(任务),从而提高程序的响应能力。在程序中,这种彼此独立运行的部分称之为线程。并发存在的隐患:共享资源,解决方案:锁定资源,完成任务后,释放资源锁。
1.13 Java 和 Internet
1.13.1 Web 是什么1、客户/服务器计算技术客户/服务器系统的核心思想是:系统具有一个中央信息存储池(central repository of information),用来存储某种数据,它通常存在于数据库中,可以根据需要将它分发给某些人或机器集群。(关键在于信息存储池的位置集中于中央,使得它可以被修改,并且这些修改将被传播给信息消费者)信息存储池、用于分发信息的软件以及信息与软件所驻留的机器或机群被总称为服务器。2、Web 就是一台巨型服务器Web 发展过程:1、简单单向过程(对服务器产生一个请求,它返回一个文件,浏览器软件根据本地机器的格式解读文件);2、客户可以将信息反馈给服务器;3、客户机执行运算任务客户端浏览器运行程序的能力,这被称为“客户端编程”1.13.2 客户端编程Web 最初的“服务器-浏览器”设计是为了能够提供交互性的内容,但是交互性完全由服务器提供。服务器产生静态页面,提供给只能解释并显示它们的客户端浏览器。HTML 包含有简单的数据收集机制:文本输入框、复选框、单选框、列表和下拉式列表以及按钮——它只能被编程来实现复位表单上的数据或提交表单上的数据给服务器。这种提动作通过所有的 Web服务器都提供的通用网关接口(common gateway interface,CGI)传递。提交内容会告诉CGI 应该如何处理它。可以通过 CGI 做任何事情。CGI 程序复杂而难以维护,并同时响应时间过长的问题。响应时间依赖于所必须发送的数据量的大小,以及服务器和 Internet 的负载。问题的解决方法就是客户端编程。意味着:Web 浏览器能用来执行任何它可以完成的工作,使得返回给用户的结果各加迅捷,而且使得网站更加具有交互性。客户端编程的问题是:它与通常意义上的编程十分不同,参数几乎相同,而平台却不同。Web 浏览器就像一个功能受限的操作系统。1、插件(plug-in)插件的价值在于:它允许专家级的程序员不需经过浏览器生产厂家的许可,就可以开发某种语言的扩展,并将它们添加到服务器中。提供了一个“后门”,使得可以创建新的客户端编程语言。2、脚本语言(scripting language)通过使用脚本语言,可以将客户端程序的源代码直接嵌入到 HTML 页面中,解释这种语言的插件在 HTML 页面被显示时自动激活。优点是易于理解,因为它只是作为 HTML 页面一部分的简单文本,当服务器收到要获取该页面的请求时,它们可以被快速加载。缺点是代码会暴露给任何人去浏览(或窃取)。JavaScript 语言优缺点。用于创建更丰富、更具有交互性的图形化用户界面(graphic user interface,GUI)。3、JavaJava 是通过 applet 以及使用 Java Web Start 来进行客户端编程。4、备选方案Macromedia 的 Flex,允许创建基于 Flash 的与 applet 相当的应用。ActionScript 语言是基于 ECMAScript 的,Flex 使得在编程时无需担心浏览器的相关性,因此远比 JavaScript要吸引人得多。值得考虑的备选方案。5、.NET 和 C#它要求客户端必须运行 Windows 平台。6、Internet 和 Intranet1.13.3 服务器端编程基于 Java 的 Web 服务器,它让你用Java编写的被称为 servlet 的程序来实现服务器端编程。Servlet 及其衍生物 JSP,消除了处理具有不同能力的浏览器所遇到的问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值