写在最前

本系列为个人对BAT大厂面试题与全栈知识体系结合的简化梳理及本人在日常学习中一些知识的整理(包括但不限于书本、他人博客、微信公众号等渠道),仅为个人总结学习与整理知识框架。供读者参考学习,共同进步。

封装

隐藏对象的属性和实现细节,仅对外提供公共访问方式

private、protected、public

  • public
    紧随其后的元素对任何人都是可用的
  • private
    除类型创建者和类型的内部方法之外的任何人都不能访问的元素
  • protected
    继承的类可以访问protected成员,但是不能访问private成员

Java还有一种默认的访问权限(default),当没有使用前面提到的任何访问指定词时,它将发挥作用。
这种权限通常被称为包访问权限,因为在这种权限下,类可以访问在同一个包中的其他类的成员,但是在包之外,这些成员如同指定了private一样。

继承

继承实现了 IS-A 关系,子类可以继承自父类,从而获得父类非private的属性和方法。
继承是多态的前提

多态

多态是指允许不同子类型的对象对同一行为作出不同的响应。
多态分为编译时多态和运行时多态:

编译时多态主要指方法的重载(overload)
运行时多态指程序中定义的对象引用所指向的具体类型在运行期间才确定

运行时多态有三个条件:

  • 继承

  • 覆盖(重写)(override)

  • 向上转型

向上转型

把对某个对象引用视为对其基类类型的引用的做法被称作向上转型

overload & override

  • override
    重写,运行时的多态性。参数列表必须相同,返回值小于等于父类,抛出的异常小于等于父类,访问修饰符大于等于父类
  • overload
    重载,在同一个类中,出现了多个同名的方法。编译时的多态性,参数类型不同,个数不同,顺序不同,与方法返回值和访问修饰符无关