一、多态

1.多态的理解

①.同一个动作作用于不同的对象产生的不同行为
②.多态就是一个对象多种表现形式。
举例:F1按键在不同的场景下是不一样的,在window窗口是打开window帮助文档,在word打开的是word帮助文档。

2.多态的优点

①.降低了程序之间的耦合度。
②.提高了程序的可扩展性。

3.多态的类型

①.编译时多态:静态的 方法重载(在编译期间调用相同的方法根据不同的形参列表区分)
②.运行时多态:动态的 只有在运行期间才能确定使用的对象类型,才能确定变量的应用指向的是哪个实例。

4.多态的必要条件

①.继承:存在继承关系的子类和父类。
②.重写:子类重新定义父类的方法(方法的覆盖)
③.向上转型:父类的引用指向子类的实例。Person p = new Man();

5.多态的体现方式

①.基于继承的体现方式
  不同的子类重写父类的方法体现出来的不同的形式
②.基于接口的体现方式

对象的多态:
1.将父类的引用指向子类的实例
2.在编译时调用父类的方法,在执行时,调用的是子类的方法
3.在编译时看左边,运行时看右边

上转型和下转型
1.上转型:将子类对象交给父类引用,可以自动转化
2.下转型:强制类型转化

二、final

1.final修饰的类不能被继承

2.final修饰的成员属性是常量(不能重新赋值)

常量的命名规则:全部大写 如果有多个单词组成 中间使用下划线分割
常量是存储在方法去的常量池 举例:COUNTRY_CITY

3.final修饰的方法不能被重写

三、可变参数在这里插入代码片

①语法:数据类型…可变参数名称
②可以接收任意个参数(零个或者多个或者一个数组)
③如果形参列表中既有普通参数也有可变参数那么可变参数一定在最后声明
注意:在使用可变参数时要注意空指针