- 一、多态
- 1、多态的应用场景
- 2、多态的含义
- 3、实现多态的三要素
- 4、多态的实现方式
- 4、关于多态的含义解释(三要素)
- 具有继承关系(略)
- 子类重写父类方法
- 使用父类的引用指向子类的对象
- 5、引用类型的数据转换问题
- 二、instanceof的使用
- 1、instanceof的作用(比较数据类型)
- 2、instanceof的使用语法
- 3、代码示例
同一种操作,由于条件不同,产生的结果也不同
2、多态的含义多态:对象的多种形态
3、实现多态的三要素- 编写具有继承关系的父类和子类
- 子类重写父类方法
- 使用父类的引用指向子类的对象
- 将父类作为形参
- 将父类作为返回值
此博客有具体讲解:
Java的方法重写
参照:5、引用类型的数据转换问题
示例:
// 创建一个以父类Pet作为对象类型的引用对象Dog Pet dog = new Dog(); // 创建一个以父类Pet作为对象类型的引用对象Cat Pet cat = new Cat();5、引用类型的数据转换问题
例如:
假设:在一个(Pet)父类下有两个子类(Dog)(Cat)
以父类为对象类型,可以创建父类本身的对象(也可以创建Dog类的对象,也可以创建Cat类的对象),但是其真实类型还是其本身,创建的 Dog类与创建的 Cat类不能互通
同一个引用类型,使用不同的实例而执行不同操作
代码示例:
package com.bdqn.ready;
public class Test {
public static void main(String[] args) {
// 创建一个以父类Pet作为对象类型的引用对象Pet
Pet pet = new Pet();
// 创建一个以父类Pet作为对象类型的引用对象Dog
Pet dog = new Dog();
// 创建一个以父类Pet作为对象类型的引用对象Cat
Pet cat = new Cat();
}
}
以上代码情况下,可以进行以下赋值
- 非强制转换类型
pet = dog;
pet = cat;
cat = dog;
dog = cat; - 需要强制转换类型
Dog dogs = (Dog)dog;
Cat cats = (Cat)cat;
特别提示:
向上转型:将父类的引用指向子类对象,称为向上转型,自动进行类型转换
Pet dog = new Dog();二、instanceof的使用 1、instanceof的作用(比较数据类型)
instanceof可以实现数据类型的检测,如果检测符合返回true,检测不符合返回false。
2、instanceof的使用语法变量名(或对象名) instanceof (数据类型)
3、代码示例package com.bdqn.ready;
public class Test {
public static void main(String[] args) {
// 创建一个以父类Pet作为对象类型的引用对象Pet
Pet pet = new Pet();
// 创建一个以父类Pet作为对象类型的引用对象Dog
Pet dog = new Dog();
// 创建一个以父类Pet作为对象类型的引用对象Cat
Pet cat = new Cat();
// 检测数据类型
if (dog instanceof Cat){
System.out.println("dog 不是 Cat类型");
} else if (dog instanceof Dog) {
System.out.println("dog 是 Dog类型");
}else {
System.out.println("不是Cat类型和Dog类型");
}
}
}
代码执行结果



