Java面向对象三大特性,即封装、继承、多态

@Java

面向对象三大特性知识模板

大家好,我是Ziph!

今天分享下面向对象三大特性的知识内容。
结合思维导图学习效果更佳!点击下方链接进入
Java面向对象三大特性思维导图

一、封装

封装的必要性:在对象的外部为对象的属性赋值,可能存在非法数据的录入,存在不安全隐患。就目前的技术而言,并没有办法对属性的赋值加以控制。所以要实现属性的封装非常重要!

什么是封装?

  • 概念:尽可能隐藏对象的内部实现细节,控制对象的修改及访问权限
  • 访问修饰符:private(可将属性修饰为私有,仅限本类可见)
    在这里插入图片描述

公共访问方法
在这里插入图片描述
过滤有效数据

在这里插入图片描述

注意:外部访问只可以访问公共空间,不可以直接访问属性设置为private的私有空间,而get、set方法是外界访问对象私有属性的唯一通道,方法内部可对数据进行检测和过滤

二、继承

所谓继承,生活中的继承有儿子继承父亲的资产,而程序的继承,是类与类之间特征和行为的一中赠与或获得,好比,所有生物都会呼吸,而动物类也都会呼吸,动物类就可以继承生物类的呼吸特征;人类会走路,而老年人类就不会走路了吗?答案是不对的,当然老年人也是会走路的哈,所以定义的老年人类就可以继承人类的走路行为。
规律:

  • 功能越精细,重合点越多,越接近直接父类
  • 功能越粗略,重合点越少,越接近Object类(所谓:万物皆对象)

父类的抽象
在这里插入图片描述

继承

  • 语法:class子类extends父类{} //定义子类时,显示继承父类
  • 应用:产生继承关系之后,子类可以使用父类中的属性和方法,也可以定义子类独有的属性和方法
  • 好处:既提高了代码的复用性,又提高了代码的可扩展性

继承的特点

在这里插入图片描述

不可继承

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

三、访问修饰符

访问修饰符

四、方法重写

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

方法的覆盖

  • 方法的覆盖原则:
  • 方法名称、参数列表、返回值类型必须与父类相同
  • 访问修饰符可与父类相同或是比父类更宽泛
  • 方法覆盖的执行:
  • 子类覆盖父类方法后,调用时优先执行子类覆盖后的方法

super关键字

  • 第一种用法:
  • 在子类的方法中使用“super.”的形式访问父类的属性和方法
  • 例如:super.父类属性、super.父类方法();
  • 第二种用法
  • 在子类的构造方法的首行,使用“super()”或“super(参数)”,调用父类构造方法
  • 注意:
  • 如果子类构造方法中,没有显示定义super()或super(实参),则默认提供super()
  • 同一个子类构造方法中,super()、this()不可同时存在(因为都是要声明在首行)

在这里插入图片描述
super的访问方法

在这里插入图片描述
super的访问属性
在这里插入图片描述
继承中的对象创建

在这里插入图片描述
继承后的对象创建过程

在这里插入图片描述
super调用父类无参构造
在这里插入图片描述

super调用父类的有参构造
在这里插入图片描述
this与super
在这里插入图片描述

五、多态

  • 概念:父类引用指向子类对象,从而产生多种形态
  • 二者具有直接或间接的继承关系时,父类引用可指向子类对象,即形成多态
  • 父类引用仅可调用父类所声明的属性和方法,不可调用子类独有的属性和方法
    在这里插入图片描述

多态的作用

  • 屏蔽子类间的差距
  • 灵活、耦合度低

多态中的方法覆盖

实际运行过程中,依旧遵循覆盖原则,如果子类覆盖了父类中的方法,则执行子类中覆盖后的方法,否则执行父类中的方法

多态的应用

  • 场景一:
  • 使用父类作为方法形参实现多态,使方法参数的类型更为宽泛
  • 调用方法时,可传递的实参类型包括:本类型对象+其所有的子类对象
  • 场景二:
  • 使用父类作为方法返回值实现多态,使方法可以返回子类对象
  • 调用方法后,可得到的结果类型包括:本类型对象+其所有的子类对象

在这里插入图片描述

六、拆箱装箱

向上转型(装箱)
在这里插入图片描述
向下转型(拆箱)
在这里插入图片描述

类型转换异常

在这里插入图片描述

instanceof关键字

在这里插入图片描述

学了循环、数组,也学了面向对象等等就可以自己写一个简单的小项目了,如果你想把前面所学到的所有知识点结合在一个综合案例中去点击下方链接(详解):
Java中国银行系统ATM机自助实现登录、开户、存款、取款、转账、查询余额、修改预留手机号、注销账号等功能

如有问题请留言回复!

拜拜

发布了49 篇原创文章 · 获赞 94 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_44170221/article/details/104373235
今日推荐