Java学习笔记——多态性Polymorphism

Java中实现多态的机制

Java中实现多态的机制靠的是父类或者接口定义的引用变量可以指向子类或者具体的实现类的实例对象,而程序调的方法在运行期才动态绑定,就是引用变量所指向的具体实例对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法。

具体来说,就是父类A有一个方法function(),子类B,C分别继承A并且重写function(),当创建一个对象Ab=newB();b.function()就调用Bfunciotn,假如你newC(),那调用的就是C重写的function。怎么判断使用那个类的function就是动态绑定,这个现象就是多态。

范例代码:

public class Test0718_Polymorphism2 {
	public static void main(String[] args) {
		Person person1 = new Person();
		Person person2 = new Man();
		Person person3 = new Woman();

		person1.walk();
		person2.walk();
		person3.walk();

		((Man) person2).Moneyyy();
		// ((Woman)person2).Shopping();
		((Woman) person3).Shopping();
		person1.nameString = "xm";
		person1.age = 17;
		person2.nameString = "男人姓名";
		person2.age = 18;
		m1(person1);
		m1(person2);
		m1(person3);
		// Man man = new Man();
		// Woman woman = (Woman)man;
	}

	public static void m1(Person person) {
		String iString = person.getInfo();
		System.out.println(iString);
	}
}

class Person{
	String nameString;
	int age;
	public void walk() {
		System.out.println("走路。。。");
	}
	public static void pName() {
		System.out.println("姓名。。");
	}
	public String getInfo() {
		// TODO Auto-generated method stub
		return "Name:"+nameString+"\tAge:"+age;
	}
}
class Man extends Person{
	int money;
	int age;
	@Override
	public void walk() {
		System.out.println("男人走路。。。");
	}
	public static void pName() {
		System.out.println("男人姓名。。");
	}
	public void Moneyyy() {
		System.out.println("男人赚钱。。。");
	}
	@Override
	public String getInfo() {
		// TODO Auto-generated method stub
		return "Name:"+nameString+"\tAge:"+age+"\tMoney:"+money;
	}
}
class Woman extends Person{
	int hehe;
	@Override
	public void walk() {
		System.out.println("女人走路。。。");
	}
	@Override
	public String getInfo() {
		// TODO Auto-generated method stub
		return "Name:"+nameString+"\tAge:"+age+"\tHehe:"+hehe;
	}
	public void Shopping() {
		System.out.println("女人购物。。");
	}
}

执行结果:
---------- 运行 ----------
走路。。。
男人走路。。。
女人走路。。。
男人赚钱。。。
女人购物。。
Name:xm Age:17
Name:男人姓名 Age:0 Money:0
Name:null Age:0 Hehe:0


输出完成 (耗时 0 秒) - 正常终止
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值