# OOP

# 三大特征

封装、继承、多态。

多态,指的就是父类引用指向子类对象,调用方法时会调用子类的实现而不是父类的实现。
多态的实现的关键在于“动态绑定”。

# Override, Overload的含义与区别?

Override表示“重写”,是子类对父类中同一方法的重新定义, Overload表示“重载”,也就是定义一个与已定义方法名称相同但签名不同的新方法。

# 接口与抽象类的区别?

接口是一种约定,实现接口的类要遵循这个约定; 抽象类本质上是一个类,使用抽象类的代价要比接口大。

# 接口与抽象类的区别?

抽象类中可以包含属性,方法(包含抽象方法与有着具体实现的方法),常量接口只能包含常量和方法声明。 抽象类中的方法和成员变量可以定义可见性(比如 public、private等)而接口中的方法只能为public(缺省为public) 一个子类只能有一个父类(具体类或抽象类)而一个接口可以继承一个多个接口,一个类也可以实现多个接口。 子类中实现父类中的抽象方法时,可见性可以大于等于父类中的,而接口实现类中的接口 方法的可见性只能与接口中相同(public)

# 静态内部类与非静态内部类的区别?

静态内部类不会持有外围类的引用,而非静态内部类会隐式持有外围类的一个引用。

# Java中多态的实现原理