一. 向上造型
父类引用 变量 = New 子类对象;
-
必须有继承关系
-
子类对父类方法进行重写
-
通过父类类型的引用变量调用子类重写之后的方法
向上造型的对象可以调用哪些方法看父类,具体的方法执行看子类(父类--目录 子类:正文)
【案例】
public class Main {
public static void main(String[] args) {
/*
Pet pet:养一个宠物
pet=new Dog():具体养只狗
声明的类型是父类型,实际创建的是子类型,即:向上造型
*/
Pet pet =new Dog();
//向上造型的对象可以调用哪些方法看父类
//方法真正执行看子类是否重写方法
pet.eat();
m(new Pet());
m(new Dog());
}
public static void m(Pet p){
p.eat();
}
}
//宠物类
class Pet{
public void eat(){
System.out.println("在吃东西...");
}
public void sleep(){
System.out.println("在睡觉...");
}
}
//狗狗类
class Dog extends Pet{
public void eat(){
System.out.println("在哼哧哼哧地吃...");
}
public void bsrk(){
System.out.println("在汪汪的叫...");
}
}
//猫咪类
class Cat extends Pet{
public void eat(){
System.out.println("在优雅的吃...");
}
public void 磨爪子(){
System.out.println("在呼呼的磨爪子...");
}
}
二. 向下造型
子类引用 变量 = New 父类对象;
【注意】
- 需要强转
- 强转前用instanceof判断
【instanceof】
- 是Java中的关键字,是一个双目运算符,也是比较运算符中的一种,运算结果必然是boolean。
- 格式:Boolean res=对象名 instanceof 类名或者接口名;
- 作用:判断对象名是否是右边的类的类型或者接口的类型
- 注意:
- 左边只能是引用数据类型,不能是基本数据类型。
- 右边只能是类名或者接口名。如果是类名,当左边是当前类的对象或子类的对象,结果为true。
【使用到的地方】
在Spring中,通过context.getBean()传入id来获取Bean,返回的对象是Object,需要向下强转