程序员小白必看的企业级开发基础知识-java(EE)

  • 继承
  1. 什么是继承,继承可以解决代码复用,当多个类存在相同属性时,可以从这些类中抽象出父类,在父类中定义这些相同的属性和方法,所有子类不需要重新定义这些方法和属性,只需要通过extends来声明继承的父类。 示意图:
程序员小白必看的企业级开发基础知识——java(EE)

  1. 继承的作用

代码的复用性提高了 代码的可维护性和扩展性提高了

  1. 继承的十个细节

子类继承了所有的属性和方法,非私有的属性和方法可以直接访问,但是私有属性和方法不能在子类直接访问,要通过父类提供公共的方法去访问 人类必须调用父类的构造器,完成父类的初始化 当创建子类对象时,不管使用子类的哪个构造器,默认情况下总会去调用父类的无参构造器,如果父类没有提供无参构造器,则必须在子类的构造器中用 super 去指定使用父类的哪个构造器完成对父类的初始化工作,否则,编译不通过(所以有继承关系的时候一般都加上一个无参构造,防止出错) 指定调用父类的构造器,用super(参数列表) super在使用的时候只能出现在第一行,(super只能在构造器中使用) super()和this()都只能在构造器中的第一行,所以super()和this()不能存在同一个构造器中 java中所有的类都是object 的子类,object 是所有类的基类 父类构造器的调用不限于直接父类,将一直往上追溯直到 Object 类(顶级父类) java是单继承机制,子类中只能继承一个父类(直接继承) 不能滥用继承,两个类必须要满足一定的关系才能够使用继承,比如(is a)Dog is a animal

  1. 继承的本质
  • 继承原理结构图
程序员小白必看的企业级开发基础知识——java(EE)

  1. super 关键字
    概念:代表父类的引用,用于访问父类的属性、方法、构造器

访问父类的属性和方法,但是不能直接访问父类的private属性和方法 访问父类的构造器,只能放在构造函数的第一行 调用父类构造器的好处,明确分工,父类属性由父类声明,子类属性由子类声明 当子类中有父类的属性和方法时,要访问父类的属性和方法必须通过super, super访问不限于直接父类,如果爷爷类与本类重名,也可以使用super去访问,如果有多个基类的方法和属性重名,按照继承原理结构图,就近原则

  1. super 和 this得比较

No.

区别

this

super

1

访问属性

访问本类中的属性,如果没有此属性,则从父类中继续查找

从父类开始查找属性

2

调用方法

访问本类中的方法,如果没有此方法,则从父类中继续查找

从父类开始查找方法

3

调用构造器

调用本类构造器,必须放在构造器的首行

调用父类构造器,必须方法构造器首行

4

特殊

表示当前对象

子类中访问父类的对象

  1. 方法重写/覆盖 钙奶:子类有一个方法,和父类的某个方法名、返回值类型、参数(个数、数据类型、顺序)一样,就说子类的这个方法重写/覆盖父类的方法,关键字(@Override)
  2. 重写的细节

子类的方法,形参列表,方法名,要和父类方法中的形参列表,方法名完全一样 子类的返回类型和父类的返回类型一样,或者是父类返回类型的子类,如父类返回类型Object ,子类返回类型是String 子类的方法不能缩小父类方法的访问权限 public > protected > 默认 > priate

  • 多态
  1. 基本内容

概念:同类对象的同一种行为表现出来的不同形态 多态机制

a. 编译的时候检查的是夫类型里面的属性和方法有没有,有,则不报错,正常执行没有则报错 b. 运行的时候绑定的是子类型对象空间,调用子类型对象空间中的属性和方法

  1. 为什么设计多态

a.解决 封装的时候传的是什么数据类型,封装者不清楚 b. 体现差异化,同一类对象的同一种行为表现出来不同的形态

  1. 多态的向上转型(关键字:instanceof)

1.本质:父类的引用指向子类的对象
2. 语法: 父类类型 引用名 = new 子类类型
3. 特点

a. 编译类型看左边 运行类型 看右边
b. 可以调用父类中的所有成员(遵循访问权限)
c. 不能调用子类中的特有成员
d. 最终运行效果看子类的具体实现

  1. 多态向下转型(编译不通过,可以理解强制类型转化,一定要进行强制类型转化,否则很有可能报错(classCastException))

语法: 子类类型 引用名 = (子类类型) 父类引用
特点

a. 只能强转父类的引用,不能强转父类的对象
b. 要求父类的引用必须指向的是当前目标类型对象
c. 当向下转型后,可以调用子类类型中的所有成员

  1. 多态的好处:提高代码的拓展性、通透性,降低代码的耦合度
  2. 多态的应用 多态数组:数组定义类型为父类类型,里面保存的实际存储类型为子类类型(应用见java练习专题)
  3. 使用场景:同一类对象的同一种行为表现出来不同的形态,满足这一条件者均可以考虑使用多态
发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章