> 文章列表 > 3.31串讲

3.31串讲

3.31串讲

3.31串讲 面向对象

什么是对象、类:

  • 类:是对具有相同特性事物的抽象;在java中Class就是类,类是有属性(成员变量)和方法
  • 对象:对象是类的具体实例

类是一个抽象的概念,把组成的抽象叫属性,把行为的抽象叫方法

面向对象,面向过程

  • 面向对象:一切皆对象,注重结果
  • 面向过程:一切皆方法,注重过程

面向对象特征

  • 封装:
    • 属性私有化,提供公开的getter、setter方法,
    • 安全性,可以不用在意具体实现细节
  • 继承:
    • extends
    • java中是单继承,但可以多层继承
    • 一个类只能继承一个类
    • 所有类都有父类,如果没有看到 extends,它的父类就是 Object
    • 代码复用
  • 多态:
    • 同一个事物在不同环境下表现出不同的形态
    • 行为(方法)的多态:
      • Override 重写/覆盖
      • Overload 重载
    • 对象的多态:
      • 父类 f = new 子类
      • 父接口 f = new 实现类;
      • 条件:继承或实现的关系,从左到右:has a;从右到左:is a 关系
  • 抽象:
    • abstract
    • 不容易出错

接口&抽象类

  • 抽象类:特殊的类,类名前用abstract 修饰
    • 抽象类不一定有抽象方法,有抽象方法的类必须是抽象类
    • 抽象类不能实例化,必须通过子类继承后来new 对象
  • 接口:特殊的抽象类,用 interface 修饰
    • 接口中的方法都是 public abstract 修饰的,所以默认省略这两个关键字
    • 接口中的变量都是常量
    • 类和接口之间可以多实现,接口与接口之间可以多继承
  • 在有继承和实现的情况下,先继承后实现

构造方法/构造器

  • 特点:与类名一致,没有返回值类型,也不写void
  • 作用:创建对象,给属性赋值,初始化
  • 一个类中可以有多个构造方法,如果不写,系统默认提供一个无参构造方法,如果写了构造方法,系统不在默认提供,写了有参构造方法,建议加上无参构造,因为继承时子类会默认调用父类的无参构造方法
  • 构造方法之间相互调用,使用 this(xxx),并且必须放在构造方法的第一行,只能调用一次

关键字

  • this:当前对象
    • this.XXX 调用本类的属性
    • this(XXX) 调用本类的其他构造方法,,必须放在构造方法第一行
  • super:
    • super.XX调用父类的属性
    • super(XXX)调用父类的构造方法,,必须放在构造方法第一行
  • static
    • 静态的
    • 静态方法、静态内部类、静态变量、静态代码块
    • 属于类的成员
    • 一个类只有一份,所有对象共享
  • final
    • 最后的,最终的
    • 修饰变量:赋值后不能被修改
    • 修饰方法:方法不能被重写
    • 修饰类:类不能被继承
  • instanecof 判断对象类型转换

修饰符

访问修饰符 本类 同包 派生类 其他
private × × ×
默认 × ×
protected ×
public

内部类

  • 匿名内部类
  • 成员内部类
  • 局部内部类
  • 静态内部类

枚举 Enum

  • 用来定义一组常量,对象数目固定,不可随便造
  • 季节、月份、星期

重载和重写

  • 重载:
    • 发生在同一个类中
    • 方法同名不同参
  • 重写:
    • 发生在父子类中
    • 子类方法与父类方法关系:两同两小一大
      • 方法名相同、参数列表相同
      • 返回值类型小于等于父类、抛出异常小于等于父类
      • 访问修饰符大于大于父类

父子类方法调用关系

父子类之间的方法有以下关系:

  • 父类中有,子类中没有:调用父类的
  • 父类中有,子类中也有:调用子类的重写后的方法
  • 父类中没有,子类中有:子类特有方法需要强转后调用