1.JAVA简单概念

1.4 被隐藏的具体实现

    访问控制定义:程序开发人员分为类创建者(创建新数据类型)和客户端程序员(在应用中使用数据类型的类消费者),访问控制是指类创建者向客户端暴露必需部分,隐藏其他部分。

    优点:类创建者可以自己任意修改,允许库设计者可以改变类内部的工作方式而不用担心会影响到客户端程序员;让客户端程序员无法触及他们不应触及的部分,防止粗心、不知内情的客户端程序员毁坏代码脆弱部分(需隐藏);

    内部边界关键字:public(任何人可用)、private(除类型创建者和类型的内部方法外,都不可访问)、protected(与private相当,除此外,继承的类也可访问)、default(可访问在同一个包中的其他类成员)

1.5 复用具体实现

    复用:直接使用该类的一个对象或将该类的一个对象置于某个新类中。    

    组合:使用现有的类合成新的类,被看作“has-a”的方式。如果组合动态发生,称为聚合。

    处处都用继承会导致难以使用、过分复杂的设计,建立新类应优先考虑组合,更简单灵活清晰。

1.6 继承

    继承简单来说是以现有的类为基础复制一个副本,通过增加或修改这个副本来创建新类。

    继承有基类和导出类两种情况,基类包括了所有导出类的共享的特性、行为和核心概念,导出类表示核心概念可以被实现的不同方式。例:几何形作为基类都有尺寸,颜色,位置等特性,绘制、移动等行为;而导出类圆,四边形,三角形等又有各自反转特性,面积计算行为。

    基类与导出类产生差异的方法:1.在导出类中添加新方法,而这不属于基类的一部分(此时应考虑基类是否需添加这些新方法);2.导出类覆盖基类的方法,改变基类方法的行为。

    “is a”:导出类完全继承接口,只覆盖基类方法。也叫纯粹替代。

    “is like a”:在导出类中添加新的方法,不完全的替代基类,且基类无法访问新加方法。

1.7 伴随多态的可互换对象

    多态利用的是后期绑定概念,向对象发送消息时,不知道哪一段代码会被执行,被调用的代码直到运行时才能确定。

    将导出类看作它的基类过程称为向上转型,这是导出类将自己从必须知道确切类型中解放出来的关键。将一个消息发送给多边形基类型,会基于多边形的实际类型产生正确的行为。当类型作为参数时,传入的是多边形的基类型,不知道要处理的确切类型,只知道事情会发生。

1.8 单根继承结构

    所有的类都继承自单一的基类,保证所有对象都具备某些功能,可以在每个对象上执行基本操作。在堆上创建对象更容易,参数传递更简化,垃圾回收实现更容易。

1.9 容器

    创建一种对象类型,其持有对其他对象的引用,在可能不知道需要多少对象时使用。

    Java在其标准类库中包含大量容器满足不同需要,List(存储序列),Map(关联数组,用来建立对象间的关联),Set(每种对象类型只持有一个),队列,树,堆栈等构件。

    容器设计原因:1.提供不同类型的接口和行为。2.对于某些操作,不同容器有不同效率(ArrayList和LinkedList具有相同接口和行为,但花费代价不同。ArrayList中,随机访问元素是花费固定时间的操作,LinkedList来说,随机选取元素需要在列表中移动,效率低,访问元素越靠近表尾花费时间越长。而在序列中间插入一个元素,LinkedList效率比ArrayList高)。

    参数化类型:容器可以存储对象Object,如果将对象引用置入容器时向上转型为Object,那么从容器中取出对象引用时,怎样知道之前存进去的具体类型呢,这里就用到了参数化类型(范型),定制一个只接受和取出某种类型对象的容器。

1.10 对象的创建和生命周期

    关于对象的生成

    C++追求效率控制,优先考虑对象的存储空间分配和资源释放(生命周期控制),但在编写程序时就定好对象数量、类型和生命周期,缺乏灵活性。

    Java采用了动态内存分配方式。知道运行时才知道需要对象数量、类型、生命周期,使用new关键字在堆的内存池中动态创建对象。

    关于对象的销毁

    C++通过编程方式确定何时销毁对象,容易因处理不当造成内存泄漏。

    Java通过“垃圾回收器”自动发现对象何时不被使用,继而销毁,释放内存。

1.11 异常

    异常处理是和程序正常运行路径并行的,在错误发生时执行的另一条路径。异常无法被忽略,并且提供了从错误情境下恢复的途径,不必须退出程序,java内置了异常处理并强制使用它,代码编写更简单。

1.12 并发编程

   并发:对大量问题切分成可独立运行的任务(彼此独立的部分称为线程),提高程序的响应能力。

    共享资源:有多个并行任务访问同一资源时,易出问题,所以某个任务锁定某项资源,完成任务,然后释放资源锁,其他任务就可以访问、使用此资源。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值