# OOP面向对象

# 包的作用

  1. 区别类名相同的类,方便管理,包名是域名的反写且必须都为小写,保障全球唯一
  2. 有助于对访问权限实施控制
  3. 有助于划分和组织Java中各个类,每个包中的类的职责不同

# new操作符的作用

  1. 分配内存空间
  2. 初始化变量
  3. 执行构造方法
  4. 返回引用(地址)

# 封装

  • 作用:

    控制外界对数据的操作权限,封装在Java中也是一种规范

  • 实现:

    1. 定义私有的属性
    2. 定义公开的get/set方法

boolean类型的封装get方法可以是is

# static修饰符

  1. 使用static修饰的变量属于这个类所有,通常把使用static修饰的属性和方法称为类属性(类变量)、类方法,不使用static修饰的属性和方法属于单个对象,通常称为实例属性(实例变量)、实例方法
  2. java中普通类是不允许声明静态的,只有内部类才可以
  3. 在加载类的过程中,完成静态变量的内存分配,再执行静态块,两者是在创建对象之前执行的,类属性、类方法可以通过类名和对象名访问,实例属性、实例方法只能通过对象名访问,类方法只能访问静态成员(类成员)
  4. 在方法中不能定义static变量
  5. 静态方法中不能使用this或super关键字

# 构造方法

  1. 方法名与类名相同
  2. 无返回值类型 作用:用于再次初始化对象 方法重载
  3. 在同一个类中或父子类中(父子类时,同参数列表就是重写,不同参数列表就是重载)
  4. 方法名相同
  5. 参数列表不同(顺序、数量或类型不同)

# final修饰符

  1. 用final修饰的类不能被继承
  2. 用final修饰的方法不能被重写
  3. 用final修饰的变量,将变成常量,只能赋值一次

编码规范:常量所有字母大写,使用_分隔

# extends继承

  1. 使用extends继承类
  2. 使用super(参数列表)调用父类的构造方法,默认调用父类的无参构造方法
  3. 使用super.调用父类的属性和方法

注:this调用自身构造函数和super调用父类构造方法时必须放在第一句,一定要跟父类的构造方法的参数类型相匹配

  • 作用:
  1. 代码复用,方便扩展
  2. 子类继承父类的属性和方法,并保留自身特有的属性和方法

# super的作用

  1. super调用父类构造方法,必须放在方法第一行,super(..)且参数列表必须与父类构造函数相同
  2. super调用父类属性和方法,可放在方法任意一行

# 重写

子类中可以根据需求对从父类继承的方法进行重新编写,称为方法的重写或方法的覆盖,方法重写必须满足如下需求:

  1. 重写方法和被重写方法必须具有相同的方法名和参数列表,返回值类型相兼容
  2. 私有方法不能被重写
  3. 重写方法不能缩小被重写方法的访问权限
  4. 子类的方法不能抛出父类的方法没有抛出的异常

# abstract抽象

  1. 抽象的类不能被实例化
  2. 抽象的方法没有方法体
  3. 抽象方法只能在抽象类中定义而抽象类中可以定义非抽象方法
  4. 非抽象子类必须实现父类的抽象方法(抽象子类可以不实现父类的抽象方法)

# Java接口的特征

  1. 不存在构造方法
  2. 方法只能是公开的、抽象的
  3. 只能存在public、static、final的变量,即公开的静态常
  4. 接口之间是多继承的,所以可以通过接口来实现多继承
  5. 实现接口的非抽象子类必须实现接口的抽象方法
  6. 不能实例化

# 多态

  1. 父类做形参,子类做实参
  2. 父类做类型,子类实例化
  3. 父类做方法的返回值,子类实例化

上面3点等于 父类代替子类

  • 多态概念:

同意个实现接口,使用不同的实例而执行不同的操作

  • 多态变量:

一个父类变量引用子类不同对象。

  • 方式:
  1. 使用父类作为方法形参实现多态。
  2. 使用父类作为方法返回值实现多态。

一个变量只有一个类型,这个类型是在编译时指定的,按照多态的定义,一个变量可以指定不同的类型的对象,在java中,当这个条件成立时,那这个变量就是多态性。 父类变量可以引用子类对象,这是Java允许的。

  • 多态的变量:
    • 优点:父类的共同行为可以多态的表现出来。
    • 缺点:子类特有的行为,不可以直接调用,如果调用应进行类型判断后强制转换;
    • 多态作用:提高代码复用性和程序的可拓展性。
最近更新: 2019/10/17 上午4:20:42