[if !supportLists]一.[endif]多态
1. 多态性是OOP中的一个重要特性,主要是用来实现动态联编的,换句话说,就是程序的最终状态只有在执行过程中才被决定而非在编译期间就决定了。这对于大型系统来说能提高系统的灵活性和扩展性
: Programmer p1 = newChinese(); 创建子类对象 赋值给其父类的引用变量 调用方法 如果方法被重写了 调用的就是 子类重写的方法 ,子类不同 重写的方法具体的实现也不同
多种实现方式 多种形态--- 多态
Programmerp1 = new Chinese();
编译时类型 运行时类型 这行代码 引用变量 p1的 两种状态 编译时 Programmer 状态 运行时 Chinese状态
2. 多态的好处
减少了方法的重载 即使增加子类不需要额外提供方法
3.多态的前提:1.继承是多态的前提2.子类要重写父类的方法3.父类的引用指向子类的对象4.运行时执行的是子类重写的方法 就是多态
4.多态运用场景:1.使用父类作为方法的形参 实参可以是任意的子类型2.使用父类
二.引用类型的强制类型转换
子类转换为父类:自动类型转换 上转型 父类引用var=子类对象 此时var对象不能操作子类新增的成员变量和方法 可以调用子类继承或重写的方法
父类转换为子类就是强制转换 绝不是做手术,而是父类的真面目就是一个子类,否则会出现类型转换错误
子类类型 子类引用变量 = (子类类型)父类引用变量;
[if !supportLists]三.[endif]Final关键字
最后的 最终的 不可改变的 可以修饰类方法变量 final和abstract是互斥的
Final修饰的类不能被继承 没有继承
Final修饰的方法不能被子类重写
Final修饰的常量 表示常量 只能被赋值一次
修饰静态变量静态变量只能被赋值一次
修饰实例变量 实例变量只能被赋值一次
修饰局部变量只能被赋值一次
修饰引用变量只能被赋值一次
注意:final修饰的变量必须被显式初始化 否则会编译报错
Final的意义:某些类不是为了继承而设计的或者不希望别的类继承此时使用final修饰符某些类不希望被重写 某些变量只希望被复制一次