封装和继承

本文详细介绍了封装的概念,包括其作用、实现步骤以及与构造器的结合。同时阐述了继承的基础概念,如复用、语法、便利性、细节问题,以及内存布局和执行顺序。

封装

封装介绍

封装就是把抽象出的数据(属性)和对数据的操作(方法)封装在一起,数据被保护在内部,程序的其他部分只能通过被授权的操作(方法),才能对数据进行操作

封装的理解和好处

  • 1.隐藏实现细节
  • 2.可以对数据进行验证,保证安全合理

封装的实现步骤

  • 1将属性进行私有化private(不能直接修改属性)
  • 2.提供一个公共的(public)set方法,用于对属性判断并赋值
  • 3.提供一个公共的(public)get方法,用于获取属性的值
    如图
    在这里插入图片描述

将封装和构造器结合

在构造器代码块中调用set方法来获取相应的值,从而在将构造器加入到封装中
在这里插入图片描述

继承

继承的基本介绍和示意图

基本介绍

继承可以解决代码复用,让我们的编程更加靠近人类思维,当多个类存在相同的属性(变量)和方法时,可以从这些类中抽象出父类,在父类中定义这些相同的属性和方法,所有的子类不需要重新定义这些属性和方法,只需要通过extends来声明继承父类即可。

示意图

在这里插入图片描述

继承的基本语法

class 子类 extends 父类{}

  • 1.子类会自动拥有父类的属性和方法
  • 2.父类又叫超类 基类
  • 3.子类又叫派生类

继承给编程带来的便利

  • 1.代码的复用性提高了
  • 2.代码的扩展性和维护性提高了

继承的细节问题

-1.子类继承了所有的属性和方法,非私有的属性和方法可以直接访问,但是自由的属性和方法不能在子类中直接访问,要通过公共的方法去访问
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
-2.子类必须调用父类的构造器,完成父类的初始化
在这里插入图片描述
在这里插入图片描述

  • 3.当创建子类对象时,不管使用子类的哪个构造器,默认情况下总会去调用父类的无参构造器,如果父类没有提供无参构造器,则必须在子类的构造器中用super去指定使用父类的哪个构造器完成父类的初始化工作,否则编译不会通过
    在这里插入图片描述
    在这里插入图片描述

  • 4.如果希望指定去调用父类的某个构造器,则显式的调用一下:super(参数列表)
    在这里插入图片描述

  • 5.super在使用时,必须放在构造器的第一行(super只能在构造器中使用)

  • 6.super()和this()都只能放在构造器的第一行,因此这两个方法不能共存在一个构造器中

  • 7.java所有类都是Object类的子类,是所有类的基类
    在这里插入图片描述

  • 8.父类构造器的调用不限于直接父类!将一直追溯直到Object类(顶级父类)

  • 9.子类最多只能继承一个父类(指直接继承),即java中是单继承机制
    如何让A类继承B类和C类?(A继承B,B继承C)

  • 10.不能滥用继承,子类和父类之间必须满足is-a 的逻辑关系
    如:Person is a Music
    Music extends Person //不合理
    Person extends Music //合理

继承的内存布局

在这里插入图片描述
在这里插入图片描述

继承后父类和子类的执行顺序

构造方法和静态代码块:当创建子类对象时,先调用父类的构造方法和静态代码块,再调用子类的
调用普通方法时:先在子类中找,如果子类中没有,则一层一层的在父类中找

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值