面向对象和面向过程的区别

  • 面向过程:面向过程的性能比较高。因为面向对象再类调用的时需要实例化,比较消耗资源。但面向过程没有面向对象易维护、易复用、易扩展。
  • 面向对象:面向对象易维护、易复用、易扩展。因为面向对象有封装、继承、多态的特性。故能设计出低耦合的系统,使系统更加灵活、更加易于维护。但是新能较面向过程低。

在Java中定义一个空参方法的作用

Java在执行子类的构造方法之前,若没有显式的使用super()来调用父类的构造方法,则会隐式调用父类隐藏的空参构造方法。如果父类定义了有参数的构造方法,该隐藏的空参构造方法会失效,故需要在父类声明一个空参的构造方法,否则子类构造方法在编译时将会发生错误,因为Java程序在父类中找不到没有参数的构造方法可供执行。

成员变量和局部变量的区别

  1. 在语法的形式上:成员变量属于类,能被访问修饰符和static关键字修饰、而局部变量属于方法不能被访问修饰符和static关键字修饰。
  2. 在内存中的存储:一个实例的成员变量存储在堆中,而一个方法的局部变量存储在栈中。
  3. 从存活时间上:成员变量随实例创建而产生,随实例销毁而消失。局部变量随方法的调用而自动消失。
  4. 另外成员变量在声明若没有被赋初值会自动赋初值,局部变量不会自动赋值。

面向对象三大特征

  1. 封装:
    将一个对象的内容隐藏在对象内部,尽可能地隐藏内部的细节,只提供一些对外的接口来使其与外部发生联系。用户无需关心对象内部的细节。

优点:

  • 减少耦合:可以独立地开发、测试、优化、使用和修改
  • 减轻维护的负担:可以更容易被程序员理解,并且在调试的时候可以不影响其他模块
  • 提高软件的可重用性。
  1. 继承:
    根据现实中存在的一些对象具有一定数量的共同点,可以将这些特点归纳作为这些对象的父类,并通过继承可以快速的创建新的类,以提高代码的重用,提高程序的可维护性和开发效率。
    注意:对于父类的private属性或方法,子类只是拥有但是无法访问。

  2. 多态:
    多态分为编译时多态和运行时多态:

  • 编译时多态主要指方法的重载
  • 运行时多态指的是对象引用所指向的具体类型在运行期才确定,具体表现为父类的引用指向子类的实例。

运行时多态有三个条件:1.继承。2.覆盖。3.向上转型
多态使一个对象具有多种状态,提高代码的易扩展性。

transient关键字

对于不想进行序列化的变量,使用transient关键字修饰。

该关键字会阻止用此关键字的变量持久化和恢复。另外transient只能修饰变量,不能修饰类和方法。