Java多态,向上转型与向下转型

本文深入探讨了面向对象编程中的多态概念,解释了父类和子类如何通过重载和覆盖实现同名属性或方法的不同表现。同时,介绍了向上转型和向下转型的概念及其在Java中的应用实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

**多态意味着一个对象有着多重特征,可以在特定情况下,表现出不同的状态,从而对应不同的属性和方法。
**
具体来说就是指在继承过程中父类和子类中可以有多个同名但意义或者实现方式不同的属性或方法,也就是重载和覆盖。在实际应用中,还有两种特殊情形:向上转型和向下转型。

父类

public class User {
    public String name = "父类";
    public int b = 2;
    public void print(){
        System.out.println("User的类方法");
    }
    public void b(){
        System.out.println("b");
    }
}

子类

public class Student extends User{
    public String name = "子类";
    public int a = 1;
    public void print(){
        System.out.println("Student类的方法");
    }
    public void t(){
        System.out.println("t");
    }
}

向上转型和向下转型

public class helloWord {
    public static void main(String[] args){
        /**
         *所谓向上转型即是指声明的是父类变量实例化时却是new了一个子类
         * 这里User是父类声明的  new的时候调用的确实子类的构造方法Student()来实例化了一个对象
         * */
        User u = new Student();

        /**
         *所谓向下转型即是指声明的是父类变量实例化时却是new了一个子类
         * 这里c1是父类声明的  new的时候调用的确实子类的构造方法c2()来实例化了一个对象
         * 然后用类型转换的方式将父类声明的引用转换为子类的引用
         * */
        c1 c = new c2();
        c.m1();
        ((c2) c).m1();//对象引用的强制转换  ((子类名) 父类声明的对象名)
    }
}

class c1{
    public void m1(){
        System.out.println("c1");
    }
}


class c2 extends c1{
    public void m2(){
        System.out.println("c2");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值