Java04(方法重载、封装、setter/getter、继承、抽象类、里氏代换原则、多态)

面向对象的特征(三个或四个)

  • 封装 为保护数据
    隐藏对象的属性和实现细节
    仅对外提供公共访问方式
  • 继承 为减少代码冗余
    继承时多态的前提 提高代码的复用性
  • 抽象 实现代码的重构
  • 多态 重载(构造方法) 重写(父类方法 子类扩展)
    父类或接口定义的引用变量可以指向子类或具体实现类的实例对象
    提高程序的扩展性

方法重载

  • overload
  • 实现java中多态的机制之一
  • 在同一个类中 实现方法名相同 形参列表不同 与返回值无关
  • 形参列表的不同体现在参数个数 参数类型 参数个数的不同上
    eg.
    在这里插入图片描述
    在这里插入图片描述

封装

  • 为将设计者和使用者分离 java采用了封装机制
  • 封装的是数据 目的是保护了数据 用户只能看到数据而不能直接操作数据
  • 属性和方法皆可封装 通过使用private修饰符修饰
    属性的封装 所有成员变量约定进行封装
    方法的封装 被封装的方法只能内部调用
  • 当用户想要访问被封装的数据时 设计者需要提供接口
    有三种方式可以访问到被封装的数据
    1、 构造方法
    2、普通方法
    3、setter/getter
    在这里插入图片描述

setter/getter

  • setter/getter 就是java中被声明为私有的变量的访问接口 即set和get方法

setter/getter和构造方法的区别

  • 使用构造方法 可以在创建对象的同时进行属性初始化 较为方便 但当属性较多时 可能需要创建多个构造方法 耦合度较高
  • setter/getter虽然没有构造方法方便 但是好在可以自由进行组合

继承

  • java面向对象编程的基石 允许创建分等级层次的类
  • 子类继承父类的所有方法和属性 包括私有属性 只是私有属性不能直接访问
  • java只能实现单继承 但可以实现间接继承
  • 一个类如果没有继承另一个类 则这个类继承了Object类 Object类是所有类的始祖类
    eg
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

抽象类

  • 被抽取出的类 抽取子类共有的属性和方法 子类可以扩展自己的属性和方法
  • 类被abstract修饰
  • 抽象类不能被直接实例化 只能通过子类实例化
    eg.
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

里氏代换原则

  • 当一个地方需要父类对象时 使用子类代替
  • 子类只能重写父类的非实例方法 (实例方法可以重写 但约定不重写)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    测试
    在这里插入图片描述

多态

多态 实际上是一种声明 多种体现形式

分类

  • 编译时多态:方法重载
    一个类内 同一个方法名多次实现

  • 运行时多态:方法重写
    一个父类 多个子类继承 每个子类实现与父类方法名相同的方法
    多态运行的前提

  • 必须有继承

  • 必须有重写

  • 必须有父类的声明指向子类的引用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值