Java基础知识

来源:互联网 发布:广州拓飞涉密数据恢复 编辑:程序博客网 时间:2024/06/08 01:53

Java基础知识

java特性

  1. 抽象

    所有编程语言的目的都是提供一种抽象。汇编语言是对基础机器的少量抽象,命令式语言(C)是对汇编语言的一种抽象。而面向对象的程序设计则是在此基础上,对问题本身中包含的元素进行抽象,我们称这种元素的抽象为“对象“(Object)。

  2. 封装

    在程序开发中,按照角色分为创建者和使用者,当对象被创建告知者创建后,由使用者进行开发使用,这种类应当只向使用者暴露需要使用的部分,而隐藏其他部分。因此出现了封装(访问控制)这一概念,其存在的目的主要有两点:

    1. 让使用者无法触及不应触及的部分。
    2. 允许创建者改变内部实现方式而不会影响使用者的使用
      Java通过三个关键字,以及一个默认属性在类的内部设定边界:
名称 所有 包内 继承类 内部 说明 public yes yes yes yes 对所有人开放 默认(default) no yes yes yes 对包内开放 protected no on yes yes 对自身以及继承该类的所有自对象开放 private no no no yes 只对自身开放

3. 继承

以现有类为基础,复制副本后可以对副本进行添加或者修改,而不影响原有类,继承实现的便是这样的效果。两个类之间可以含有相同的特性和行为,但是其中一个类可能包含更多的特性,能处理更多的消息。继承使用基类和导出类来表示这种类型之间的相似性。一个基类中包含了其所有导出类共有的所有属性和行为,并且基类以及其所有的导出类都具有相同的类型。导出类可以通过新增新的方法或者改变现有基类的方法,使自身与基类产生差异。java中通过关键字extends来继承现有类,来实现新的类,通过覆盖(overriding)来实现方法的重写,在java中只能继承一个基类但是可以实现(implment)多个接口。当导出类在继承基类后,只覆盖基类的方法,而添加新的接口特性,则视为纯粹替代,这种关系是一种is-a的关系。当导出类添加了新的方法后则编程is-like-a的关系

4. 多态

在处理某些具有不同行为表现的类型对象时,有时候需要将这些类型当作某一种特定类型来处理,这样可以编写出不依赖于特定某个类型由能灵活表现不能行为的代码,多态要实现的就是这样的效果。java代码在编写和编译时,可以指定某一个特定基类型作为传入参数或者返回值,但是实际传入的对象可能有多种不同的导出类来传入,所以采用后期绑定的方式,在代码执行时计算出方法的地址,这样就可以涵盖每个类型作为参数或返回值时所具有的不同行为表现。 将导出类当作它的基类的过程叫做向上转型(upcasting)。

面向对象的设计原则

  • 单一职责原则(SRP)

    一个类只负责一个功能领域中的相应职责 
  • 开放封闭原则(OCP)

    软件实体应对扩展开放,而对修改关闭
  • 里氏替换原则(LSP)

    所有引用基类对象的地方能够透明地使用其子类的对象
  • 依赖倒置原则(DIP)

    抽象不应该依赖于细节,细节应该依赖于抽象
  • 接口隔离原则(ISP)

    使用多个专门的接口,而不使用单一的总接口
  • 合成复用原则 ( CRP )

    尽量使用对象组合,而不是继承来达到复用的目的
  • 迪米特法则 (LoD)

    一个软件实体应当尽可能少地与其他实体发生相互作用