面向对象


面向对象

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

特性:封装、继承、多态

类与对象

类与对象的关系:

  • 类是一种抽象的数据类型,它是对某一类事物整体描述

  • 对象是抽象概念的具体实例

在不同的类中实例化一个对象:

 类名 对象名 = new 方法名()
     对象名.参数         //调用类中的参数
  • 同一个类可以有不同的多个对象

构造器

形式:

  • 一种与类名相同的方法

  • 没有返回值

作用:

  • new实例化对象的本质是调用构造方法

  • 初始化对象的值

有参构造与无参构造:

  • 定义了一个有参构造后,想要调用无参构造需要重新定义无参构造

  • 无参构造与有参构造的本质是 方法的重载

Alt+Insert 快捷键:定义构造方法

封装

形式:

  • 使用private修饰类中的属性或方法,对应public。

  • 被private修饰时无法直接调用类中的属性与方法

调用方法:

  • 在对应类中使用get方法

     public 数据类型 get属性名(){
         return this.属性名;
     }
  • 在主类中调用属性

     对象名.get属性名();

     

给对应属性设置值:

  • 在对应类中使用set方法

     public void set属性名(数据类型  属性名){
         this.name = name;
     }
  • 在主类中赋值

     对象名.set属性名(要赋的值);

快捷键:alt+insert 快捷建立get与set方法

作用:

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

  • 隐藏代码的实现细节

  • 同一接口

  • 系统可维护

继承

形式:

  • 在子类名后加extends加父类名,子类可以继承父类中的属性与方法

  • 可以使用private等修饰词修饰属性与方法给子类继承增加限制

  • java中只有单继承,没有多继承。即一个子类不能有多个父类

调用:

  • 可以直接调用子类使用父类的属性与方法,被private等修饰词修饰时除外

快捷键:ctrl+H 查看父类与子类的继承树

  • 继承树的最高级父类为Object类,是java自带的类

  • 所有类都默认继承Object类

重写

形式:

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

  • 方法名必须相同,参数列表必须相同

  • 修饰符的范围可以扩大但不能缩小

    • 修饰符的范围:public>protected>default>private

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

作用:子类方法重写父类方法

  • 父类方法不一定需要

Alt+Insert 快捷键:快捷建立子类重写

多态

形式:

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

     father f1 = new son();
    • 因此被这些修饰词修饰是无法形成多态

      • static 静态方法,属于类不属于对象

      • final 常量

      • private 封装方法,不能被其他类调用

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

作用:同一个方法可以根据对象不同采取不同的行为

  • 父类引用不能使用子类方法,但可以进行转换

抽象类

形式:

  • 使用abstract关键词修饰类,也可以修饰抽象类中的方法

  • 抽象方法只有名字没有方法的实现

特性:

  • 抽象类只能由抽象类继承

  • 抽象类不能被实例化,只能靠子类去实现

  • 抽象方法只能写在抽象类中,但抽象类可以写普通方法

接口

形式:

  • 与类对应,类使用class修饰,接口使用interface修饰

特点:

  • 接口中的所有定义都是抽象的,即只有名字没有方法的实现

  • 接口中的所有方法都默认带public与abstract修饰

  • 与抽象类相同接口不能被实例化,但接口没有构造器

实现:

  • 接口中的方法使用实现类来实现,实现类的形式为,类名后加关键词implements加接口名

  • 实现类中需要重写接口中的所有方法

  • 在多继承接口时,在接口名后加“,”加接口名,多继承的接口同样需要重写其中的所有方法

异常

形式:

  • 程序运行时出错时会显示出现异常

  • 异常类也是类,其父类为throwable,throwable子类为error类与exception类

捕获异常:

  • 使用关键字try{}标记需要捕获异常的代码

     try
     {
         需要捕获异常的代码块
     }
  • 使用关键字catch{}编写需要捕获异常的类型

     catch(异常类)
     {
         代码块
     }
    • catch可以写多个来捕获不同类型的异常

  • 使用关键字finally{}做善后工作,无论try与catch是否执行最后都会执行finally

     finally
     {
         代码块
     }
  • 快捷键ctrl+alt+d:快捷生成try/catch/finally关键字

抛出异常:

  • 使用关键字throw主动抛出异常,无论程序是否有异常

     throw new 异常类()

自定义异常:

  • 自定义类继承自exception类,称为自定义异常类

  • 重写toString方法打印异常信息,快捷键alt+insert快捷建立toString方法

相关