OOP 复习

1.OOP (Object Oriented Programming) 面向对象编程;

  OOAD(Object Orient Analysis  Design)面向对象的分析与设计,设计尽可能地接近现实世界,以最自然的方式表述实体。

  使用UML建模语言创建系统的分析模型与设计模型是OOAD的实现的主要手段。

2.类创建模式:工厂方法模式 (Factory Method,类创建模式)----待实现??????

  对象创建模式共4种:单例模式、抽象工场模式、建造者模式、原型模式

  单例模式(Singleton):确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

  抽象工厂模式(Abstract Factory):当有多个抽象角色时,使用的一种工厂模式。待实现????

  建造模式(Builder):将产品的内部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象。

 原型模式(Prototype):通过给出一个原型对象来指明所要创建的对象的类型,然后复制这个原型对象的方法创建出更多同类型的对象。

3.重写equals方法的时候总要重写hashCode方法;如果不重写hashCode(),就违反Object类的hashCode()的通用约定,导致这个类无法与所有基于散列值得集合类结合在一起正常工作,包括HashMap,HashSet、HashTable。

4.重写和重载:

重写:父子类中,方法名相同,参数列表相同(类型,个数),方法体相同,返回值和参数列表的访问权限大于等于父类的访问权限,看对象的类型调用方法,运行期绑定;

重载:同一类中,方法名相同,参数列表不同,看参数列表调用方法,编译期绑定。

5.abstract class中可以定义成员变量和非abstract方法,interface只能定义abstract方法(方法有无abstrator修饰都是抽象方法?);

  abstract class继承是单继承,而interface可以多实现;

  abstract class继承是一种“is a”的关系,父类和派生类在概念本质上是一致的,interface仅仅是实现了interface定义的契约而已。

6.面向对象的基本特征:封装(封装属性和方法)、继承(新类可以从现有的类中派生)、多态(参数的多态性,方法的重载和重写)。

7.子类通过super.method();调用父类的方法;

  创建子类时默认调用父类无参构造方法,若调用父类有参的构造方法可以在子类的构造方法第一行通过 super(参数)形式调用。

  构造器方法不能被继承,因此不能被重写,但可以被重载

8.String类是final类,故不能被继承。

9.static修饰成员变量:修饰的变量是类的变量,可以通过类名来引用static成员,static成员变量和类的信息一起存储在方法区,而不是堆中,一个类的成员变量只有一份,无论该创建了多少对象。

  static修饰成员方法:修饰的方法调用时没有具体的对象,因此static方法中不能对非static成员(对象成员)进行访问,static方法的作用在于提供“工具方法”和“工厂方法"等。

  static块:属于类的代码块,在类加载期间执行的代码块,只执行一次,可以用来加载静态资源。

10.fanal/finally:final用于定义常量;finally是异常处理机制的一个子句,不管前面定义的try语句中是否有异常,都会执行finnaly子句中的代码;

  instanceof:判断其指向对象的实际类型;

  synchronized:修饰方法或方法块,防止多个线程同时访问这个类中的synchronized块;

 throw/throws:throw允许用户抛出一个exception对象或任何实现了throwable的对象。throws用在方法的声明中来说明哪些异常这个方法是不处理的,而是提交到程序的更高一层。

11.接口可以继承接口;抽线类可以实现接口;抽象类可以继承实体类。

12.静态代码块,代码块,构造方法的执行顺序:子类A继承B,A和B都有静态代码块,代码块,构造方法,现在 A a  = new A();

  执行顺序为:  B static{}    Astatic{}      B{}        B()        A{}         A()

13.类 class :对某种类型的对象定义变量和方法的原型,它表示对现实生活中一类具有共同特征的事物的抽象;

  类库 class library :实现各种功能的类的集合;

 包 package :类的容器,用于分隔类名空间;

  jar 文件:用于发布和使用类库,可被编译和jvm直接使用。

14.栈(stack)和堆(heap)都是java用来在内存中存放数据的地方,二者的区别:

    栈存放基本类型变量和对象引用,当超过作用于后释放;堆存放new出来的对象和数组;

    堆可以动态的分配内存大小,生存期不必事先告诉编译器,java的垃圾收集器会自动收走这些不在使用的数据;存在栈中的数据大小与生存期必须是确定的,缺乏灵活

   性。栈的存取速度比堆块,仅次于位于CPU中的寄存器。堆由于要在运行时动态分配内存,存取速度较慢。

   栈的数据可以共享,堆不可以;

   栈是一种线型集合,其添加和删除元素的操作应在同一段完成,栈按照后进先出的方式进行处理,堆是不连续的,可随机访问。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值