多态与final

多态
概述
多态是继封装性,继承性之后,面向对象的第三大特性。
定义
多态:是指同一行为,具有多个不同的表现形式。
前提
1.继承或者实现[二选其一]
2.父类的引用指向子类的对象[格式体系]
3.必须有方法的重写[意义:不重写是无意义]
多态的表现格式:
父类类型 变量名 =new 子类对象;
变量名.方法名();
备注:父类类型指的是子类对象继承的父类类型,或者实现的父接口类型
如果在使用多态方式调用方法时,首先检查父类当中的是否有该方法,如果没有,则编译报错,如果有则执行的时子类重写后的方法。
多态的好处
在实际开发中,父类类型作为方法的形式参数(实际参数),传递子类对象(实参)给方法,进行方法的调用,更能体现出多态的扩展性和便利性。
访问类中成员变量有两种方式:
1.直接通过对象名访问成员变量:看等号左边是谁,那么就优先用谁,如果没有继续往上找
2.间接通过成员方法访问成员变量:看该方法属于谁,优先用谁,没有则继续往上找
引用数据类型的转型
多态的转型分为向上转型和向下转型两种
向上转型:多态本身就是子类类型向父类类型向上转型的过程,这个过程是默认的,当一个父类引用指向了一个子类对象,便是向上转型。
使用格式: 父类类型 变量名 =new 子类类型();
向下转型:父类类型向子类类型向下转换的过程,这个过程是强制的,一个已经向上转型的子类对象,将父类的引用又转为子类引用,可以使用强制类型转换的格式,便是向下转型。
使用格式:子类类型 变量名=(子类类型)父类变量名;
转型的异常:在进行向下转换的过程中,一不小心就会出现java.lang.ClassCastException类型转换异常,为了避免这种类型转换异常的发生,java提供了instanceof关键字,给引用变量做类型的校验
格式:变量名 instanceof 数据类型
如果变量属于该数据类型,则返回true
如果变量不属于该数据类型,则返回false
fainal关键字代表最终的不可改变的
常见的四种用法:
1.可以用来修饰一个类
2.可以修饰一个方法
3.可以修饰一个局部变量
4.可以修饰一个成员变量当 final关键字用来修饰一个方法的时候,这个方法就是最终方法,也就是不能被覆盖重写
对于成员变量来说,如果使用final关键字修饰,那么这个变量也是不可改变的
1.由于成员变量具有默认值,用final之后系统要求你必须手动赋值,不再有默认值了
2.对于final的成员变量,要么使用直接赋值,要么通过构造方法赋值,二者之间2选其一
3.必须保证类当中的所有的重载的构造方法,都最终会对final成员变量进行赋值
使用接口时,需要注意的以下事项:

1.接口是没有静态代码块也没有构造方法

2.一个类只能直接继承一个父类,但是一个类可以实现多个接口

​ 一个接口可以继承多个接口,类于类之间是一种单继承关系,类与接口之间是一种多实现关系

3.如果一个类实现了多个接口,存在重名的抽象方法,只需要重写一次抽象方法

4.如果一个类没有重写接口当中的所有抽象方法,那么该类必须是抽象类

5.如果一个类实现了多个接口,接口当中存在有重名的默认方法,那么实现类一定要对冲突的默认方法重写

6.如果一个类直接继承了一个父类又同时实现了多个接口,父类当中的成员方法和接口当中的默认方法存在重名,优先调用父类当中的成员方法

原文地址:https://www.cnblogs.com/lulubenlei/p/14038930.html