Java的多态

Java的多态

一、定义:同一种方法根据发送对象的不同二采取多种不同的行为方式。

二、一个对象的实际类型是确定的,但可以指向对象的引用类型有很多(父类、有关系的类)。

三、多态存在的条件:

1. 有继承关系。

2. 子类重写父类方法。

3. 父类引用指向子类对象。

父类引用指向子类,实例化产生的对象:Person s1 = new Student();

1. 该对象(s1)拥有父类的所有方法(若方法被子类重写,则该方法变成重写后的方法)。

2. 该对象(s1)拥有子类重写的父类的方法。

3. 该对象(s1)没有子类新增加的方法。

4. 父类如果想用子类新增的方法可以用强制类型转换将将其转换为子类引用的类型。

四、多态的注意事项:

1. 多态是方法的多态,属性没有多态 !!!

2. 多态必须是父类和子类或者有联系的类之间的关系,否则会类型转换异常(ClassCastException!)

3. 多态存在的条件:

  • 必须要有继承关系
  • 方法需要重写
  • 父类引用指向子类 Father f = new Son();

五、instanceof关键字:Object instanceof Class

1. instanceof返回值:(X instanceof Y)如果X指向的实际类型是Y的子类或者本身,返回True,否则返回False

2. instanceof报错情况: (X instanceof Y)如果X的引用类和Y类之间没有父子关系,编译器报错

六、类型转换 (高类型–>父类,低类型–>子类)

1. 高类型转换为低类型需要强制类型转换

  • 格式:(Student) person;

  • 高类型转换为低类型会获得子类的新增的方法。

2. 低类型转换为高类型可直接转换

  • Person person = new Student();

  • 低类型转换为高类型会丢失子类新增 的一些方法。

3. 类型转换的意义:方便方法的调用,减少重复的代码,简洁!

-------------本文结束感谢您的阅读-------------