封装 继承

简介: 封装 继承

封装

  • 通过操作接口来访问方法
  • 不需要知道方法内部的具体细节,提高程序的安全性,保护数据
  • 隐藏代码的实现细节
  • 统一接口
  • 增加系统可维护性(方便在get/set方法中添加一些操作,对违规操作的限制等)
  • 高内聚:类的内部数据操作细节自己完成,不允许外部干涉
  • 低耦合:仅暴露少量的方法给外部使用
  • 通过private限定get/set方法访问

JavaBean

  • 是一种Java语言写的可重用的组件
  • 需要满足
  • 类是public
  • 有一个无参的公共构造器(默认)
  • 有属性和对应的get、set方法

this关键字

  • this代表当前对象(当前正在创建的对象)
  • 在类的方法中,我们可以使用this.属性this.方法()的方式,调用当前对象属性或方法
  • 但是,通常情况下,我们都选择省略"this."
  • 如果遇到方法的形参和类的属性同名时,需要显式的使用this.变量的形式,区分属性和形参

this调用构造器

  • 类的构造器中可以使用this(形参列表)的方式调用本类中的其他构造器
  • 不能通过this(形参列表)这种方式调用自己
  • this(形参列表) 或super()必须声明在当前构造器的首行
  • 构造器中最多只能声明一个this()用来调用其他构造器

9、继承

  • extends 父类
  • 子类:派生类、子类、subclass
  • 父类:超类、基类、superclass
  • Java中只有单继承,没有多继承,接口可以多继承(C++有)
  • 所有的类都继承自Object类  
  • 被final修饰的类不能继承
  • 特别的,父类中声明为private的属性或方法,子类继承父类以后,仍然认为获取了父类中私有的结构。只是因为封装性的影响,使得子类不能直接调用父类结构而已
  • 一个父类可以有多个子类,一个子类只能有一个父类
  • 类可以多重继承Object->父->子.....
  • 子类直接继承的父类:直接父类。子类间接继承的父类:间接父类
  • 子类继承父类以后,就获取了直接父类以及所有间接父类中生命的属性和方法
  • ctrl+H打开继承树

为什么要有类的继承

  • 减少代码的冗余,提高代码的复用性
  • 便于功能的扩展
  • 为了之后多态色使用

子类对象实例化的全过程

  • 从结果上看:
  • 子类继承父类以后,就获取了父类中声明的属性或方法
  • 创建子类的对象,在堆空间中,就会加载所有父类中声明的属性
  • 从过程上看:
  • 当我们通过子类的构造器创建子类对象时,我们一定会直接或间接的调用其父类的构造器,进而调用父类的父类构造器,直到调用了java.lang.Object类中空参的构造器为止
  • 正因为加载过所有父类的结构,所以才看到内存中有父类中的结构,子类对象才可以考虑进行调用
  • 明确:虽然创建子类对象时,调用了父类的构造器,但是自始自终就创建过一个对象,即为new的子类对象

10、super

  • 在子类的方法或构造器中,通过super.属性或super.方法的方式,显式的调用父类中声明的属性或方法。通常情况下(不重名的情况下)省略
  • super只能调用父类的构造方法,且必须在构造方法的第一个
  • super必须只能出现在子类的方法或者构造方法中
  • super和this不能同时调用构造方法!
  • 当构造器的首行没有显式的声明this(形参列表)或super(形参列表),则默认调用的是父类中空参的构造器:super()

super和this的区别

  • 代表的对象不同
  • this:等价于当前这个类本身,调用这个对象本身的方法和属性(先在类中找,找不到去父类找)
  • super:等价于父类对象,代表父类对象的引用

  • 前提
  • this:没有继承也可以使用
  • super:只能在继承条件下才可以使用
  • 构造方法
  • this():本类重载的其他构造,必须在首行
  • super():父类的构造,必须在首行
  • 在类的构造器中,this()和super()只能用其中一个
  • 当构造器的首行没有显式的声明this(形参列表)或super(形参列表),则默认调用的是父类中空参的构造器:super()
  • 在类的多个构造器中,至少一个类的构造器使用了super(形参列表)调用父类的构造器
相关文章
|
7月前
|
C++
C++中的封装、继承与多态:深入理解与应用
C++中的封装、继承与多态:深入理解与应用
152 1
|
Java
1.8 封装、继承、多态
1.8 封装、继承、多态
44 1
|
Java 编译器
类 对象 封装
类 对象 封装
77 0
|
Java
面向对象编程基础:类、对象、封装、继承和多态
面向对象编程基础:类、对象、封装、继承和多态
110 0
|
设计模式
从“封装、继承、多态”看构建知识网
从“封装、继承、多态”看构建知识网
60 0
|
存储 Java 数据库
Java面向对象之封装和继承
本篇文章记录博主对面向对象部分的学习,带大家认识Java基础知识——包与继承,后续内容将持续更新。
85 0
Java面向对象之封装和继承
|
安全 Java 数据安全/隐私保护
|
设计模式 Java 数据安全/隐私保护
【封装、继承、多态】总结
【封装、继承、多态】总结
92 0