#1、多态
多态:就同一个对象在不同时刻的表现状态不一样,例如父类的引用指向自己或子类的对象
多态前提条件:
1、要有继承,要有重写
普通类:
class Fu{}
class Zi extends Fu{}
//多态
Fu fu = new Zi();
抽象类:
abstract class Fu();
class Zi extends Fu{}
//多态
Fu fu = new Zi();
2、实现接口
interface Fu{}
class Zi implements Fu{}
//多态
Fu fu = new Zi();
多态中的成员访问:
1、成员变量
编译时看左边,运行时也看左边
2、构造方法
子类必须访问父类的无参构造方法
父类没有无参构造方法的话,子类就要显示的使用super来调用有参构造方法
3、成员方法
编译时看左边,运行时看右边
多态的好处:
1、提高代码的易维护性(由继承保证)
2、提高代码的可扩展性(由多态保证)
多态的弊端:
1、丢失子类的方法
#2、类型转换
多态中,子类向父类转换叫向上造型或向上转型,是安全的。
父类引用转子类,需要使用强制类型转换。需要注意的是:必须能够转换,如果不能转换,就会抛ClassCastException
#3、instanceof
为了避免出现ClassCastException,我们建议使用instanceof关键字
x instanceof A:检查对象x是否为类A的实例
#4、Object
Object:Object类是所有类的父类,所有的类直接或间接的继承了Object。
Object常用方法:equals和toString
多态:就同一个对象在不同时刻的表现状态不一样,例如父类的引用指向自己或子类的对象
多态前提条件:
1、要有继承,要有重写
普通类:
class Fu{}
class Zi extends Fu{}
//多态
Fu fu = new Zi();
抽象类:
abstract class Fu();
class Zi extends Fu{}
//多态
Fu fu = new Zi();
2、实现接口
interface Fu{}
class Zi implements Fu{}
//多态
Fu fu = new Zi();
多态中的成员访问:
1、成员变量
编译时看左边,运行时也看左边
2、构造方法
子类必须访问父类的无参构造方法
父类没有无参构造方法的话,子类就要显示的使用super来调用有参构造方法
3、成员方法
编译时看左边,运行时看右边
多态的好处:
1、提高代码的易维护性(由继承保证)
2、提高代码的可扩展性(由多态保证)
多态的弊端:
1、丢失子类的方法
#2、类型转换
多态中,子类向父类转换叫向上造型或向上转型,是安全的。
父类引用转子类,需要使用强制类型转换。需要注意的是:必须能够转换,如果不能转换,就会抛ClassCastException
#3、instanceof
为了避免出现ClassCastException,我们建议使用instanceof关键字
x instanceof A:检查对象x是否为类A的实例
#4、Object
Object:Object类是所有类的父类,所有的类直接或间接的继承了Object。
Object常用方法:equals和toString