TIJ 复习笔记1

TIJ 复习笔记

第一章主要介绍编程方法和OOP的一些基本概念,主要围绕着对象来讲。

正如书中所说,本章节完全不涉及代码,如果没有接触过相关的概念,建议学习一下;急于求成可以跳过本章,但是你又会回过头来,复习这些知识。

仔细梳理一下,不算多的概念,让思路更清晰。

  1. 抽象
  2. 接口
  3. 封装
  4. 组合
  5. 继承
  6. 多态
  7. 单根继承
  8. 异常处理
  9. 对象创建和生命周期
  10. 容器
  11. 并发

抽象机制(abstract)

编程语言或多或少都有抽象机制,比如汇编对机器语言进行抽象,C又对汇编进行抽象,其他语言进一步抽象。往往这种抽象是对于机器进行建模,来解答实际问题,程序员需要建立机器对于实际问题的映射。换一种方式,如果直接对问题进行抽象建模,就可以更容易的得到解。

JAVA 作为一种OOP的语言,可以将问题中的元素抽象成对象,快速的解决问题。

根据大师的定义,OOP的编程方法,万物皆为对象。

那么对象的定义:

每一个**对象**是类(Class)的特定实例(instance)
                                                    --TIJ

"object" refers to a particular instance of a class
                                                    ---维基百科

对象具有状态、行为和标识。状态就是对象具有的内部数据,行为是包含方法,标识具体来说就是在内存中的地址,用于区分不同的对象。
                                                    -TIJ

Object is a software bundle of state and behavior 
                                                    --Oracle官方教程

综上,对象既是数据和方法的组合,又是class的实例。

对象都有接口(interface)

类又可以称为对象的类型(type)。

类描述了具有相同特性(state)和行为(behavior)的对象的集合,所以一个类实际上是一种数据类型。--TIJ

因为类是一种数据类型 (实例化:是类创建对象的过程。实例是对象的具体发生,存在于程序运行时)

Instance is a concrete occurrence of any object, existing usually during the runtime of a computer program.
                                                                 -- 维基百科

A class is a blueprint or prototype from which objects are created.  
-- Oracle官方教程

综上, 类既是对象的集合,又是一种数据类型。

接口

接口描述了某一特定对象所能处理的请求。程序中需要代码来满足这些请求,这些代码与隐藏的数据一起构成了实现。

An interface is a contract between a class and the outside world. When a class implements an interface, it promises to provide the behavior published by that interface. 
                                            --Oracle官方教程

因为接口是类与外部世界的合约(规范)。

隐藏具体实现(encapsulation)

程序开发者分为,类创建者和客户端程序员(使用类)。客户端程序员在使用类的过程中需要访问控制,这有两方面原因,一方面类的创建者可以修改具体的实现,在不修改接口的前提下,不对造成影响,另一方面,使用者无法访问到类的内部数据,造成任何破坏。
java中可以通过private,project,public进行类的访问控制。

复用具体实现(composition)

复用类的最简单的方式,直接使用类的一个对象。

一个类中直接包含另外一个类的对象,又称为组合(composition)。

例如,汽车包含引擎,是一种has-a的关系。

继承(inherit)

Inheritance provides a powerful and natural mechanism for organizing and structuring your software。

顾名思义,以几何形状为例,shape是一个类,包含方法(draw/erase等),当需要创建一个新的类,三角形(triangle)或者正方形(square)时,就可以继承shape,创造的新类型,不仅包括shape的所有成员也复制了shape的所有方法。

java中是extends

多态

典型:

shape有一个接口 计算面积。
三角形和正方形分别override(覆盖)实现了这个方法。

当另外有一个程序例如

public void foo(Shape s){
    System.out.println(s.getArea());
}


public static void main(String[] args){ 
    Triangle  t = new Triangle();
    xxxxxxxx
    xxxxxxxx
    foo(t);
}

由于继承关系,t 的类型也是Shape, 当foo传参时,t会向上转型,
当foo内调用,相应的方法getArea时,这个时候java是后期绑定,调用相应的部分的代码,即按照三角形计算方面的方式执行。

单根

java中所有的对象都继承于同一个根,Object对象。

这样可以实现一些共有的特定,例如垃圾回收等。

对象的生命周期

对象有创建就有销毁,java提供了垃圾回收的机制,对象的生命周期可以等到很好的管理,而不用显示的释放。

异常处理

异常处理不属于oop的范畴,但是也是语言非常重要的一部分,异常本身也是一个对象。

并发

java 本身支持并发

容器

java提供了很多类库,其中一些提供容器的结构,来存放对象。

参考

Think in Java

Oralce官网教程

https://en.wikipedia.org/wiki/Object-oriented_programming

https://en.wikipedia.org/wiki/Instance_(computer_science)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值