java——多态

本文详细介绍了Java中多态性的概念及其应用实例。通过具体的代码示例解释了父类引用子类对象时如何调用被重写的方法,并展示了在运行时如何确定实际调用哪个方法。

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

java中的多态体现在一个变量可以引用多个不同类对象,但前提是这些不同的类必须有相同的父类。从而该变量可以且只能调用每个不同对象之间的公共操作集(方法)

在java中,父类变量可以引用子类对象,即Person p = new Chinese();

但是变量p只能调用共同的成员属性和方法。当子类中已经覆盖继承的方法时,父类的变量调用的将是子类中已重写(Overriding)的方法,重写Overriding是父类与子类之间多态性的一种表现。

代码:


public class Dog {
	private String getName(){
		return "Dog";
	}
	
	public String bark(){
		return "wang-wang";
	}
	
	public void call(){
		System.out.println("It's "+getName()+" "+bark());
	}
}


public class MiniDog extends Dog{
	private String getName(){
		return "Mini";
	}
	
	public String bark(){
		return "woo-woo";
	}
}


public class Test {
	public static void main(String args[]) {
		Dog d = new MiniDog();
		d.call();
		MiniDog md = new MiniDog();
		md.call();
	}
}

=======================================================================================

运行结果是:

It's Dog woo-woo
It's Dog woo-woo

解释:

(1)d调用的是自己的call()方法和getName()方法,因为bark()被重写覆盖所以调用的是子类的。注意:getName()方法没有被重写,因为是父类私有的,对子类来说是不可见的,被隐藏起来。

(2)第二个名字还是Dog是因为子类没有实现call()方法,用的是父类的call(),在call()里调用的还是父类的getName()。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值