java中的向上转型和向下转型介绍

目录

多态的定义:

多态主要表现为以下俩点:

总结:

示例:


​​​​​​​

前提介绍:

java的三大特性为:继承,封装,多态。

多态的定义:

  • 同一个行为具有不同的表现形式

多态主要表现为以下俩点:

  • 方法多态性:

        是重载和重写,博客有详细介绍,不过于多介绍

  • 对象多态性:

         对象的向上转型::父类 父类对象 = 子类实例

         对象的向下转型:子类 子类对象 = (子类)父类实例

主要详细讲解向上转型和向下转型

转型的前提:

要继承,方法重写

向上转型:核心本质:使用的是哪一个子类(new在哪里),而且调用的方法是否被子类覆写

通过子类对象实例化父类对象,这种属于自动转换

  • Father  f=new  Son();

向下转型:

 通过父类对象 (大范围) 实例化子类对象 (小范围) , 这种属于强制转换

  • Son s = (Son) f;

总结:

0.父类引用指向子类对象,而子类对象引用不能指向父类对象

1..向上转型: 只有当子类重写方法时访问该方法会优先访问子类的那个重写方法,其余情况都只能访问父类里面的变量和方法。

2.向下转型:建立在向上转型的基础之上,其所创建的对象可以访问父类,子类里任意变量和方法,但注意!如果子类变量和父类变量重名,则访问该变量值优先访问的是子类里该变量的值,如果子类方法重写了父类方法,同理,访问该方法优先访问的是子类重写的方法。

3.想进行向下操作之前,一定要首先 发生向上转型,否则在转型时会出现ClassCastException

示例:

class Person{
public void print(){
System.out.print("1.爸爸!");
}
}
class Student extends Person{
public void print(){
System.out.print("2.儿子!");
}
public void fun(){
System.out.print("只有儿子有!");
}
}
public class Test{
public static void main(String[] args) {
//向上转型
Person per = new Student();
per.print();
//这个时候父类能够调用的方法只能是本类定义好的方法
//所以并没有Student类中的fun()方法,那么只能够进行向下转型处理
Student stu = (Student) per;
stu.fun();
}
}

结果:

猜你喜欢

转载自blog.csdn.net/qq_40408443/article/details/121421638