面向对象

初识面向对象

  1. 面向过程

    • 步骤简单清晰,第一步做什么,第二步做什么

    • 面向过程适合处理一些较为简单的问题

  2. 面向对象(Object-Oriented Programming ,OOP)

    • 分类思维方式

    • 适合处理复杂问题

  3. 面向对象本质

    以类的方式组织代码,以对象的组织(封装)数据

  4. 三大特性

    • 封装

    • 继承

    • 多态

方法回顾和加深

  1. 修饰符

 /*
 修饰符 返回值类型 方法名(){
  //方法体
  return 返回值;
 }
 */
  1. return 结束方法,返回一个结果

  2. 方法名 注意规范,见名知意

  3. 静态方法 非静态方法

  4. 值传递 引用传递

对象的创建分析

  1. 创建和初始化对象

    使用new关键字创建对象

  2. 构造器与构造方法

    • 必须与类名相同

  3. 构造器作用

    • 使用new关键字,本质是在调用构造器

    • 用来初始化值

    (alt + insert 生成构造器)

面型对象三大特征

封装
  1. 程序设计要追求 “高内聚,低耦合”

  2. 属性私有,get/set

  3. 意义

    • 提高程序安全性,保护数据

    • 隐藏代码的实现细节

    • 统一接口

    • 系统可维护性增加

继承
  1. 继承本质就是对一批类的抽象,从而实现对现实世界更好的建模

  2. extands的意思是“扩展”,子类是父类的扩展

  3. JAVA中只有单继承,没有多继承

  4. this 当前类

    • 代表对象不同

      • this:本身调用者这个对象

      • super:代表父类对象的应用

    • 前提

      • this:没有继承也可以用

      • super:只能在继承条件下可以使用

    • 构造方法

      • this(): 本类构造

      • super():父类构造

  5. super 父类的东西

    • super调用父类的构造方法,必须在构造方法的第一个

    • super必须只能出现在子类的方法或者构造方法中

      • super和this不能同时调用构造方法

  6. 子类无参构造自动调用父类无参构造

  7. 重写(方法重写)

    • 需要有继承关系,子类重写父类的方法

      • 方法名必须相同

      • 参数列表必须相同

      • 修饰符 :范围可以扩大但是不能缩小 public>protected>default>private

      • 抛出的异常:范围,可以被缩小,但不能被扩大

        ClassNotFoundException --> Exception(大)

    • 为什么需要重写:

      • 父类的功能子类不一定需要,或者不一定满足

        Alt + Insert override

多态
  1. 即同一方法可以根据发送对象的不同而采用多种不同的行为方式

  2. 一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多种(父类,有关系的类)

  3. instanceof

  4. 类型转换

    • 父类引用指向子类的对象

    • 把子类转换为父类,向上转型

    • 把父类转为子类,向下转型(强制转换)

    • 方便方法的调用,减少重复的代码

  5. 注意事项

    • 多态是方法的多态,属性没有多态

    • 父类和子类,有联系 类型转换异常ClassCastException

    • 存在的条件:继承关系,方法需要重写 父类引用指向子类对象

  6. 不能重写的:

    • static方法,属于类,不属于实例

    • final常量

    • private方法

抽象类和接口

抽象
  1. abstract加在类前面 抽象类 类extends 继承 (接口可以多继承)

    • 抽象类不能new只能靠子类去实现它:约束

    • 抽象类里可以写普通方法

    • 抽象方法必须在抽象类中

  2. abstract加在方法前 抽象方法 只有方法名字,没有方法的实现

  3. 抽象类的所有方法

接口
  1. interface定义关键字 ,接口都需要有实现类

  2. 接口中的所有定义其实都是抽象的 public abstract

  3. 实现类接口的类就需要重写接口中的方法

  4. 作用

    • 约束

    • 定义一些方法,让不同的人实现

    • public abstract 方法

    • public static final 常量

    • 接口不能别实例化,接口中没有构造方法

    • implemrnts可以实现多个接口

    • 必须重写接口中的所有方法

内部类及OOP实战

内部类
  1. 在一个类的内部定义一个类,比如,A类中定义一个B类,那么B类相对A类来说就称为内部类,而A类相对与B类来说就是外部类

异常机制

英文名
  • Exception 异常

简单分类
  • 检查性异常

    • 最具代表性的检查异常是用户错误或问题引起的异常

  • 运行时异常

    • 运行异常是可能被程序员避免的异常

  • 错误

    • 错误不是异常,而是脱离程序员控制的问题

异常处理机制
抛出异常
捕获异常
  1. 假设要捕获多个异常:从小到大

     try{ //try监控区域
         System.out.println(a/b);
     }catch(Error e){ //catch(想要捕获的异常类型)捕获异常
         System.out.println("Error");
     }catch(Exception e){
         System.out.println("Exception");
     }catch(Throwable t){
         System.out.println("Throwable");
     }finally{  //处理善后工作
         System.out.println("finally");
     }
     //finally 可以不要   假设IO,资源,关闭

     

异常处理五个关键字
  • try

  • catch

  • finally

  • throw

  • throws

自定义异常
  1. 继承异常类 extends Exception

总结
  • 处理运行异常时,采用逻辑去合理规避同时辅助try-catch处理

  • 在多重catch块后面,可以加上catch(Exception)来处理可能会被遗忘的异常

  • 对于不确定的代码,也可以加上try-catch,处理潜在异常

  • 尽量去处理异常,切记只是简单的调用printStackTrace()去打印输出

  • 具体如何处理异常,要根据不同的业务需求和异常类型去决定

  • 尽量添加finally语句块去释占用的资源

posted on 2022-10-06 22:18  SNOWi  阅读(31)  评论(0编辑  收藏  举报

导航