面向对象

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

面向对象:把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
面积过程:分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。

什么是类?

类是描述实例对象抽象,由相似的对象组成的集合

什么是对象

对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。

对象的实例化过程

1、检查类是否加载,如果没有加载就加载这个类,要加载所有父类。
2、在内存堆中分配对象空间。属性默认自动初始化。自动初始化为“0”值。
3、进行属性的赋值
4、调用父类构造器。(默认调用父类无参数构造器!)
5、调用本类构造器

类和对象的关系

类是对象的抽象,而对象是类的具体实例

面对对象的特性(封装,继承,多态)

如果是四种要加上抽象

封装

封装就是将属性私有化,提供公有的方法访问私有对象。
封装可以维持数据安全性,维护维护程序的健壮性
实现封装的方式: 使用访问控制符
修饰符的访问权限:

修饰符本类同包包外子类包外其他类
private
默认的
preotected
public

继承

使用extends关键字实现继承
继承父类的属性和方法
继承只支持单一继承,一个子类只能继承一个父类(接口可以多继承)

继承的特点:

  1. 子类继承父类的非private的属性和方法
  2. 构造器不能继承
  3. 实例化子类

继承的语法现象:

  1. 父类型变量可以引用子类型的实例,父类型的实例是多态的
  2. 引用变量类型的自动转换("小类型"到"大类型"的自动转换)
  3. 子类可以覆盖父类的方法,修改父类的行为
  4. 方法覆盖,子类覆盖父类"相同方法签名"的方法

多态

多态是同一个行为具有多个不同表现形式或形态的能力。

多态存在的三个必要条件:

  • 继承
  • 重写
  • 父类引用指向子类对象

重载也是多态的一种

引用类型转换

  1. 向下转型(自动类型转换):是小类型到大类型的转换
  2. 向上转型(强制类型转换):是大类型到小类型的转换
  3. instanceof:用来判断引用对象的类型

重载与重写的区别

重载 (同一类中)
  1. 方法名相同
  2. 参数不一样(数量,类型,顺序)
  3. 参数名称的重载无关
  4. 返回值和重载无关
重写(父子类中)
  1. 方法名,返回值,参数列表必须完全一致
  2. 子类方法的访问级别不能低于父类的相应方法的访问级别
  • 特点:
    1. 子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数,则新方法将覆盖原来的方法
    2. toString()、equals()、hashCode()都会重写