面向对象总结

一.概念

1)对比面向过程

面向过程的缺陷:缺乏对数据的封装

2)类和对象

类是对象的模板,对象是类的具体的实例

对象:真实存在的单个的个体

现实世界是由很多对象组成的,基于对象我们抽出了类

类:类型/类别,一类个体

  1. 所有对象所共有的特征/属性(静) —变量
  2. 所有对象锁共有的行为(动)——– 方法
  3. 一个类可以创建多个对象,结构相同,数据不同

引用:为了对实例化的对象进行访问控制

  1. 引用类型变量存放该类对象的地址信息,即指向该类的对象
  2. 除8中基本类型之外,用类、接口、数组等声明的变量成为引用变量,简称“引用”

二.面向对象的三个基本特征

1)封装

数据私有化(private),行为公开化(public)

意义:

  1. 对外提供可调用的,稳定的功能
  2. 封装容易变化的、具体的细节,外界不可访问,这样的意义在于:
    1. 降低代码出错的可能性,便于维护;
    2. 当内部的实现细节改变时,只要保证对外的功能定义不变,其他的模块就不会因此受到牵连;

static(静态的):

  1. 静态变量:
    1. 由static修饰
    2. 属于类的,存在方法区中,只有一份
    3. 通常使用类名点来访问
    4. 当所有对象的数据都一样的时候使用
  2. 静态方法:
    1. 由static修饰
    2. 属于类的,存在方法区中,只有一份
    3. 通常使用类名点来访问
    4. 没有隐式的this传递:没有this节意味着没有对象,而实例对象必须通过对象. 来访问, 所以静态方法中不能直接访问实例成员
    5. 方法的操作仅与参数相关而与对象无关时使用
  3. 静态域:
    1. 由static修饰
    2. 属于类的, 类被加载期间自动执行,类只能被加载一次,所以静态块也只执行一次
    3. 常常用于加载静态资源(图片、音频、视频)

2)继承

基本概念

  1. 目的:避免代码重复,有利于代码重用
  2. 通过extends实现继承
  3. 父类:所有子类所共有的属性和行为 子类:子类所特有的属性和行为
  4. 子类继承父类后,子类具有:子类+父类
  5. 一个父类可以有多个子类,一个子类只能有一个父类–单一继承
  6. 继承具有传递性
  7. java规定:构造子类之前必须先构造父类,构造中若没有调用父类的构造,则默认super()来调用父类的无参构造方法

相关内容

1. super:指代当前对象的父类对象
  1. super.成员变量名——访问父类的成员变量
  2. super.方法名()——–调用父类的方法
  3. super()————–调用父类的构造方法
2. 向上造型:
  1. 父类型的引用指向子类的对象(但是通过父类型的引用只能访问父类所定义的成员,不能访问子类扩展的部分)
  2. 能调用哪些方法变量,要看引用的类型
3. 重写:
  1. 发生在父子类中,方法名相同,参数列表相同,方法体不同
  2. 重写的方法被调用时,看对象的类型
  3. 重写和重载的区别:
    1. 重写:父子类中,方法名相同,参数列表相同,方法体不同;遵循“运行期”绑定,根据对象类型来调用方法
    2. 重载:一个类中,方法名相同,参数列表不同,方法体不同;遵循“编译期”绑定,根据引用的类型来绑定方法

3)多态

意义:

  1. 同一类型的引用指向不同的对象时,有不同的实现—行为的多态
  2. 同一对象被造型为不同的类型时,有不同的功能—–对象的多态

表现形式:

重写+重载

相关内容:

1. 向上造型

见继承里的那一块,补充:能造型成的类型有:父类型、实现的接口

2. 强制类型转换
成功的条件有两个:
  1. 引用所指向的对象,就是该类型
  2. 引用所指向的对象,实现了该接口
instanceof关键字

判断某个引用所指向对象是否为指定对象,返回boolean结果

3. 抽象方法和抽象类
  1. 抽象方法:
    1. 由abstract修饰
    2. 只有方法的定义,没有方法的实现(大括号都没有)
  2. 抽象类:
    1. 有abstract修饰
    2. 包括抽象方法的类必须是抽象类
    3. 抽象类不能被实例化
    4. 抽象类都是需要被继承的,子类:
      1. 重写所有抽象方法–常用
      2. 也声明为抽象类—-不常用
    5. 抽象类的意义:
      1. 包公共的属性和行为,被子类所共享–代码重用
      2. 为所有子类提供一种统一的类型——向上造型
      3. 包含抽象方法,为子类提供一个统一的入口
4. 接口
  1. 是一个标准、规范
  2. 由interface定义
  3. 只能包含常量和抽象方法
  4. 接口不能被实例化
  5. 接口是需要被实现/继承的,实现类/子类(implements):必须重写接口中的所有抽象方法
  6. 一个类可以实现多个接口,用逗号分隔;若又继承又实现时,应先继承extends后实现implements
  7. 接口可以继承接口
5. 内部类
  1. 成员内部类:不太常用
    1. 类中套类,外面的叫外部类,里面的叫内部类
    2. 内部类通常只服务于外部类,对外不具备可见性
    3. 内部类对象通常在外部类对象中常见的
    4. 内部类中可以直接访问外部类的成员(包括私有的);内部类中有个隐式的引用指向创建它的外部类对象
  2. 匿名内部类:比较常用
    1. 如果想创建一个类的对象,并且对象只被创建一次,此时该类不必命名,称为匿名内部类
    2. 匿名内部类中访问外部的数据,该数据必须是final的
posted @ 2017-08-12 22:10  xs_zhou  阅读(178)  评论(0编辑  收藏  举报