【Java】继承、接口、抽象类、多态之间的关系和区别 【二】

多态:运行时引用指向子元素的实例对象【jvm内存模型很重要,也是入门的基础】
接着上面继续理解,创建一个老师类
 

package com.physical;

public class Teacher extends Person{
	String profession;
	int teacherid;
	//一个无参的构造器
	Teacher(){
		
	}
	//有参的构造器
	Teacher(int teacherid,String sname){
		super(teacherid,sname);
	}
	@Override
	void toDoThings() {
		System.out.println("我叫"+sname+"身份证号是:"+idcard+"是一名"+profession+"工号是"+teacherid);
	}
	@Override
	void eatFood() {
		System.out.println("我是一名老师");
		System.out.println("每天一日三餐很规律");
		System.out.println("时间允许的条件下,我还会打下太极");
	}
}

实现结果
 

package com.physical;

public class Test {
	public static void main(String[] args) {
		Person p=null;
		Student stu=new Student(123456789,"Joncky");
		stu.profession="学生";
		stu.stuid=001;
		p=stu;
		p.toDoThings();
		p.eatFood();
		Teacher t=new Teacher(987654321,"bear");
		t.profession="老师";
		t.teacherid=985986;
		p=t;
		p.eatFood();
		p.toDoThings();
	}
}

其实多态实现了运行时的动态绑定JAVA引用变量有两个类型:一个是编译时的类型,一个是运行时的类型,编译时的类型由声明该变量时使用的类型决定,运行时的类型由实际赋给该变量的对象决定。如果编译时类型和运行时类型不一致,就会出现所谓的多态(Polymorphism)。
更好的例子请见:https://zhidao.baidu.com/question/345445792.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值