JavaSE-面向对象三大特征

面向对象的三大特征

封装

封装的必要性

什么是封装

概念
  • 进坑隐藏对象内部实现细节,控制对象的修改及访问的权限。
访问修饰符
  • private(可将属性修饰为私有,仅本类可见),私有属性在类的外部不可访问
公共访问方法
  • 以访问方法的形式,进而完成赋值与取值操作。

访问修饰符

get、set方法是外界访问私有属性的唯一通道,方法背部可对数据进行检测和过滤。

继承

程序中的继承

  • 程序中的继承是类与类之间特征和行为的一种赠与或获得
  • 两个类之间的继承关系,必须满足“is a”的关系
  • 多个类别都可以作为“狗”的父类,需要从中选择出合适的父类
  • 功能越精细,重合点越多,越接近直接父类
  • 功能越粗略,重合越少,越接近Object类。

父类的抽象

语法

class 子类 extends 父类{}		//定义子类时,显示继承父类

继承的特点

  • Java为单继承,一个类只能有一个直接父类,但可以多级继承,属性和方法逐级叠加。

不可继承

  • 构造方法:类中的构造方法,只负责创建本类对象,不可继承。
  • private修饰的属性和方法:访问修饰符的一种,进本类可见。
  • 父子类不在同一个package中时,default修饰的属性和方法。访问修饰符的一种,仅同包可见。

访问修饰符

本类同包非同包子类其他
privateynnn
defaultyynn
protectedyyyn
publicyyyy

方法覆盖

  • 子类中可以定义和父类相同的方法
  • 当父类提供的方法无法满足子类需求时,可在子类中定义和父类相同的方法进行覆盖

方法覆盖原则

  • 方法名、参数列表、返回值类型必须与父类相同
  • 访问修饰符不能比父类更严格

方法覆盖的执行

  • 子类覆盖父类方法后,调用时优先执行子类覆盖后的方法

super关键字

  • 自子类中,可直接访问从父类集成到的属性和方法,但如果父子类的属性或方法存在重名(属性遮蔽、方法覆盖)时,需要加以区分,才可专项访问。
super访问方法
  • super.方法名()
继承中的对象创建
  • 在具有继承关系的对象创建中,构建子类对象会先构建父类对象
  • 由父类的共性内容,叠加子类的独有内容,组合成完整的子类对象
继承后的对象构建过程
  • 构建子类对象时,先构建父类对象。

多态

概念

  • 父类引用指向子类对象,从而产生多种形态。
  • 二者具有直接或间接的继承关系时,父类引用可指向子类对象,即形成多态。
  • 父类引用仅可调用父类所声明的属性和方法,不可调用子类独有的属性和方法。

多态中的方法覆盖

  • 实际运行过程中,依旧遵循覆盖原则,如果子类覆盖了父类中的方法,则执行子类中覆盖后的方法,否则执行父类中的方法。
  • 使用场景
    • 使用父类作为方法形参实现多态,使用方法参数的类型更为广泛
    • 使用父类方法返回值实现多态,使用方法可以返回不同子类对象。

向上、向下转型

向上转型(装箱)

  • 父类引用中保存真实子类对象,称为向上转型(即多态核心概念)。
  • 仅可调用Animal中所生命的属性和方法。

向下转型

类型转换异常
  • 向下转型时,如果父类引用中的子类对象类型和目标类型不匹配,则会发生类型转换异常
instanceof关键字
  • 向下转型前,应判断引用类型中的对象真实类型,保证类型转换的正确性。

  • 语法:

    引用 instanceof 类型 //返回boolean类型结果

总结

  • 父类的引用指向子类对象,从而产生多态。
  • 多态的两种应用场景
    • 使用父类作为方法形参,实现多态;
    • 仅使用父类作为方法返回值,实现多态。
  • 多态的作用
    • 屏蔽子类间的差异
    • 灵活、耦合度低。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值