第六章 面向对象 封装 继承 多态

本文详细介绍了封装的实现、私有化策略、封装目的,以及Java中的继承机制、单继承特点、多层继承和方法重写规则。此外,还讨论了多态的概念、其在编程中的表现和应用,包括变量、数组和方法返回值的多态使用场景。
摘要由CSDN通过智能技术生成

目录

封装

如何实现封装呢?权限修饰符

private私有化

封装的目的

继承

继承的好处

继承的语法格式   关键字 extends

继承的特点

1.子类会继承父类所有的实例变量和实例方法

2.Java只支持单继承,不支持多重继承

3.Java支持多层继承(继承体系)

4.一个父类可以同时拥有多个子类

方法重写(Override)

IDEA重写方法快捷键:Ctrl + O

重写方法的要求

方法的重载和方法的重写

多态

多态引用的表现

应用多态解决问题(3种)

1.声明变量是父类类型,变量赋值子类对象

2、数组元素是父类类型,元素对象是子类对象

3、方法返回值类型声明为父类类型,实际返回的是子类对象



封装

将事物的内部信息隐藏起来,外界无法访问和修改,只能通过指定方式进行访问和修改。适当的封装便于代码的维护和理解,加强代码的安全性。

把该隐藏的隐藏起来,把该暴露的暴露出来

遵循:高内聚 低耦合

高内聚:尽可能将数据和功能组织在同一个类中,各个类中的操作细节自己完成,确保其中的独立性

低耦合:各个类之间的依赖关系尽可能低,就是说一个类的变化尽量减少对其他类的影响。提高代码的扩展性和可复用性,灵活性;

如何实现封装呢?权限修饰符

权限修饰符(访问控制修饰符):private ,缺省(不写) ,protected,public

根据public 来跨包使用来记住

                本类               本包        其他包子类        其他包非子类

private     对                    错            错                              错

缺省          对                   对            错                             错

protected 对                    对            对                             错

public      对                    对            对                              对

private私有化

保护数据,防止外部直接访问和修改,以确保数据的完整性和安全性。

同时提供了公共的getter和setter方法来访问和修饰这些私有变量,可以更好控制对这些变量的访问和修改。

封装的目的

隐藏内部类实现的细节

让使用者只能通过事先预定的方法访问数据,从而在该方法中加入控制逻辑  ,限制对成员变量的不合理访问,还可以对数据进行检查监测,从而有利于保证对象信息的完整性。

private  数据类型      变量名;

提供getter 和setter方法来访问私有化的成员变量

方法:快捷键 ALT+insert 快速创建

继承

继承有延续(下一代延续上一代的基因、财富)、扩展(下一代和上一代又有所不同)的意思         

多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类中无需再定义这些属性和行为,只需要和抽取出来的类构成某种关系。如图所示:

 其中,多个类可以称为子类,也叫派生类;多个类抽取出来的这个类称为父类超类(superclass)或者基类

继承的好处
  • 提高代码的复用性

  • 提高代码的扩展性

  • 表示类与类之间的is-a关系

继承的语法格式   关键字 extends

可以声明一个子类继承另外一个父类

继承的特点

1.子类会继承父类所有的实例变量和实例方法
  • 当子类对象被创建时,在堆中给对象申请内存时,就要看子类和父类都声明了什么实例变量,这些实例变量都要分配内存。

  • 当子类对象调用方法时,编译器会先在子类模板中看该类是否有这个方法,如果没找到,会看它的父类甚至父类的父类是否声明了这个方法,遵循从下往上找的顺序,找到了就停止,一直到根父类都没有找到,就会报编译错误。

继承意味着子类的对象除了看子类的类模板还要看父类的类模板。

2.Java只支持单继承,不支持多重继承
3.Java支持多层继承(继承体系)
4.一个父类可以同时拥有多个子类

查看继承树

Ctrl +H

图像化方式

Ctrl +Alt +U

方法重写(Override)

IDEA重写方法快捷键:Ctrl + O
重写方法的要求

1.必须保证父子类之间重写方法的名称相同。

2.必须保证父子类之间重写方法的参数列表也完全相同。

2.子类方法的返回值类型必须【小于等于】父类方法的返回值类型(小于其实就是是它的子类,例如:Student < Person)。

注意:如果返回值类型是基本数据类型和void,那么必须是相同

3.子类方法的权限必须【大于等于】父类方法的权限修饰符。

注意:public > protected > 缺省 > private

父类私有方法不能重写

跨包的父类缺省的方法也不能重写

方法的重载和方法的重写

        方法的重载:方法名相同,形参列表不同。不看返回值类型。

多态

多态是继封装、继承之后,面向对象的第三大特性。

父类类型  变量名 = new 子类对象

 父类类型:指子类继承的父类类型,或者实现的父接口类型。

多态引用的表现

:编译时类型与运行时类型不一致,编译时看“父类”,运行时看“子类”

        弊端:编译时,只能调用父类声明的方法,不能调用子类扩展的方法;

好处:运行时,看“子类”,如果子类重写了方法,一定是执行子类重写的方法体;变量引用的子类对象不同,执行的方法就不同,实现动态绑定。代码编写更灵活、功能更强大,可维护性和扩展性更好了。         

应用多态解决问题(3种)

1.声明变量是父类类型,变量赋值子类对象

方法的形参是父类类型,调用方法的实参是子类对象

实例变量声明父类类型,实际存储的是子类对象

2、数组元素是父类类型,元素对象是子类对象
3、方法返回值类型声明为父类类型,实际返回的是子类对象

  

  • 12
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值