java学习-向上转型和向下转型

本文深入探讨了面向对象编程中的多态概念,通过实例解释了如何利用多态提高代码的通用性和灵活性。同时,详细介绍了向上转型的概念,即子类对象如何赋值给父类引用,以及这一过程如何影响对象的调用行为。

一,多态

在设计一个方法的时候,通常希望该方法具备一定的通用性。比如实现一个动物叫的方法,每个动物的叫声是不一样的,可以在方法中接收一个动物类型的参数,当传入猫类对象的时候就发出喵的声音,相对传入狗的对象就发出汪的声音。同一个方法这种应为参数不同而导致执行效果不同的现象叫做多态。

二,向上转型

向上转型—将子类的对象赋值给父类的引用。

一个引用能够调用那些成员(变量和方法),取决于这个对象的类型

一个引用调用的是哪个方法,取决于这个引用指向的对象

public class Animal {
    public void bark(){
        System.out.println("animal bark");
    }
	public void bite(){
        System.out.println("bite");
	}
    public void eat(){
        System.out.println("food");
	}
}

class Dog extends Animal {
    public void bark(){
        System.out.println("wang");
	}
	public void bite(){
        System.out.println("dog bite");
	}
}

class Cat extends Animal {
    public void bark(){
        System.out.println("miao");
    }
}

public class Testbark
{
    public static void main(String[] args) {
        Animal A = new Dog();//向上转型
        A.bark();
        A.bite();

        A = new Cat();
        A.bark();
        A.bite();
    }
}

输出为:

wang
dog bite
miao
bite

这就是向上转型,Animal A = new Dog();将子类对象Dog转化为父类对象Animal。这个时候A这个引用调用的方法是子类方法。

我的理解就是,比如用Animal定义了A这个引用,里面有这三种方法,Animal A = new Dog()将Dog对象里面的方法赋值给A这个引用。所以最后使用的就是Dog的方法了。这个时候如果执行A.eat();那么最后就会执行父类的eat方法。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值