面向对象三大特性:多态
什么是多态?
对于多态是一个极其抽象的词,比如说动物有猫和狗,猫和狗的行为不同,这也叫多态,就是根据引用对象的不同,产生的行为也不同,这就叫多态。
多态的实现条件
1.必须是继承的子类
2.子类得要对父类的方法进行重写
3.通过父类的引用调用重写的方法
此时func1方法的参数类型是父类,通过将不同的子类传入从而产生出不同的行为,这就叫多态。
重写
1.重写是通过子类对父类非static,final,private修饰的方法根据子类的需要对父类进行重新编写,同时其参数列表,返回类型都不能改变,
2.子类重写的访问修饰符权限不能比父类还低,比如子类是default父类是pubilc。
3.子类与父类必须是父子关系
4.可以叫上override进行修饰,如果重写的方法名错误其会提示。
重写与重载比较
1.重写要求两个类得是父子关系
2.重写的参数列表一定不能修改,重载则必须修改
3.重写的返回值类型不能修改(除非构成父子关系),重载则可以修改
4.重写的访问限定符收到严格限制,重载可以修改
向上转型和向下转型
向上转型使用场景
1.直接赋值
2.参数返回
3.方法传参
优点:让代码实现更灵活
缺点:不能调用子类特有的方法
多态的优缺点
优点
1.降低代码的圈复杂度,降低使用if-else
2.扩展性强
比如说我想在原有的Animal类上加一个子类,只需要创造一个新的实例就行,改动成本很低。