Java中多态的理解和应用

关于什么是Java中的多态,相信正在看这篇文章的同学们已经了解了不少概念,所以在这里我们就不再说过多废话,直接上代码来理解什么是多态~

测试代码

class Father {
    public void func1(){
        func2();
    }
    public void func2(){
        System.out.println("AAA");
    }

    public static void func3(){
        System.out.println("father-static");
    }

}

class Child extends Father{

    public void func1(int i){
        System.out.println("BBB");
    }

    public void func2(){
        System.out.println("CCC");
    }

    public static void func3(){
        System.out.println("son-static");
    }

}


public class Test_2 {
    public static void main(String[] args) {
        //实际类型是确定的,但是引用类型不确定
        //对象能执行哪些方法主要看左边的类型,和右边的关系不大
        Father child = new Child(); // 父类的引用指向子类
        child.func1();
        child.func2();
        child.func3();
        ((Child) child).func3();
    }
}

测试结果

CCC
CCC
father-static
son-static

结果分析和总结

    ① 重写都是方法的重写,和属性无关。
    ② 多态是方法的多态,不存在属性的多态。

    存在条件:继承关系,方法需要重写,父类的引用指向子类对象 !Father father = new Son();
    父类类型的引用指向子类,父类类型的引用可以调用父类中定义的所有属性和方法,
    如果子类重写了父类的方法,那么父类类型的引用就会调用子类中重写的父类方法。
    但是如果子类重载或者没有重写父类的方法,父类类型的引用就会调用父类中原有的
    方法,只要子类中重写了父类的方法,当调用时,父类类型的引用就会去调用子类中
    重写过的父类方法。(动态加载过程)
    static关键字:和类一起加载,既不能被子类覆盖,也不能被子类继承,不能被运行时动态加载

  • 17
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值