整理下相关知识点,打好基础,daydayup!
1,什么是多态?
多态是在继承/实现情况下的一种现象,表现为:对象多态,行为多态
2,什么是对象多态,行为多态?
对象可以指向不同的对象,同一种行为有不同的状态
(形象点可这样理解,对象多态指一个人的身份既可以是老师,也可以是学生;行为多态指跑步这个动作,有人跑得快,有人跑得慢)
例:人对象既可以指向老师类,也可以指向学生类(对象多态)。老师类和学生类都有不同的run方法(行为多态)
people a1 = new teacher();
a1.run();
people a2 = new student();
a2.run();
?3.多态的优势
1,在多态形式下,右边对象是解耦合的,便于扩展和维护(当右边对象不好用时,可以直接更换)
2,使用父类类型的变量作为方法形参时,可以接受一切子类对象
?例:形参为people时,可以接受学生及老师对象
4.多态的劣势
没有办法直接调用子类独有的方法(因为多态在调用方法时,只会看父类里的方法)
5.类型转换
由于多态的劣势,子类独有办法没办法调用,所以需要使用强制类型转换来尽心调用。
类型转换有两种
1,自动类型转化:父类 变量名 = new 子类();
从大范围到小范围,可以直接转换
2 强制类型转换: 子类 变量名 = (子类)父类变量名;
例:可以把people变量转换成学生变量,并调用学生类里独有的方法。
?但由于一些语法逻辑,强转是一定可以运行的,但如果出现了错误,java不会警告提醒,但会在运行时提示ClassCastException(强制类型转换异常)这项错误
所以强转前,可用instanceof来判断是否异常 : 变量 instanceof 类
例:判断q变量是学生变量,还是老师变量,如果判断成功就进行类型转换
整理结束,撒花!!!?
?