java多态的理解

示例代码:


package org.zeng.duotai;

public class Test {
	
	public static void main(String args[]) {
		Animal animal = new Animal();
		Dog dog = new Dog();
		
		animal.getName();
		Animal.getWeight();
		System.out.println("---------------------------------------------");
		dog.getName();
		Dog.getWeight();
		System.out.println("------------下面是多态的现象------------------------");
		Animal a = new Dog();  // 父类引用指向子类对象
		a.getName();
		a.getWeight();	
		System.out.println("============下面是对态的应用=====================");
		test(a);
	}
	
	public static void test(Animal a) {
		a.getName();
	}
}

class Dog extends Animal {
	public static void getWeight() { // 重写父类方法,静态方法  
		System.out.println("The Class is Dog! and method is static");
	}
	public void getName() { // 重写父类方法,成员方法
		System.out.println("The Class is Dog! and method is dynamic");
	}	
}

class Animal {
	public static int weight = 100; // 静态属性
	public String name = "animal";  // 成员属性
	
	public static void getWeight() { // 静态方法
		System.out.println("The Class is Animal! and method is static");
	}
	public void getName() { // 成员方法
		System.out.println("The Class is Animal! and method is dynamic");
	}	
}
运行结果为:

The Class is Animal! and method is dynamic
The Class is Animal! and method is static
---------------------------------------------
The Class is Dog! and method is dynamic
The Class is Dog! and method is static
------------下面是多态的现象------------------------
The Class is Dog! and method is dynamic
The Class is Animal! and method is static
============下面是对态的应用=====================
The Class is Dog! and method is dynamic

总结:产生多态的三个条件:继承、重写、父类引用指向子类对象

1.成员变量:编译看左边(父类,一定要有),运行时(调用时)看左边(父类,子类覆盖了父类的成员变量时,打印出的就是父类的变量值) 
2.成员方法:编译看左边(父类,一定要有),运行时(调用时)看右边(子类,子类覆盖了父类的成员方法时,调用的是子类的方法); 
3.静态方法:编译看左边(父类,一定要有)(重写), 运行时(调用时)看左边(父类的)

也就是说,类的属性是没有多态性的(可以自己测试),静态的方法也是没有多态性的,都没有动态绑定,只有成员方法才会有动态绑定,才会产生多台现象(事实上多态性产生的条件之一,重写,就限制了属性不能产生多态)

具体深层次的原因可以从内存分配和java动态绑定机制这2方面入手深究。以后空闲时,再做深究。


Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值