Java中实现多态的机制
Java中实现多态的机制靠的是父类或者接口定义的引用变量可以指向子类或者具体的实现类的实例对象,而程序调的方法在运行期才动态绑定,就是引用变量所指向的具体实例对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法。
具体来说,就是父类A有一个方法function(),子类B,C分别继承A并且重写function(),当创建一个对象Ab=newB();b.function()就调用B的funciotn,假如你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 秒) - 正常终止
分享到:
相关推荐
7.3. 多态(polymorphism) 7-18 7.3.1. 方法的覆盖(overridding) 7-18 7.3.2. 多态的分类 7-18 7.3.3. 运行时多态的三原则 7-19 7.3.4. 关系运算符:instanceof 7-20 7.4. 静态变量,方法和类 7-20 7.5. Singleton...
#Java中的多态性和继承###是什么? 一个Java项目,以演示和理解Java中的多态性和继承。 该项目使用Java 7。 ###如何使用? 这是一个eclipse项目,因此要从eclipse中执行以下步骤以导入该项目: eclipse > file > ...
java_inheritance_and_polymorphism Java中的继承和多态性练习
DnaSP DNA Sequence Polymorphism is a software package for the analysis of ...polymorphism from aligned DNA sequence data DnaSP can estimate several measures of DNA sequence variation within and between ...
随着高通量的单核苷酸多态性(Single Nucleotide Polymorphism, SNP)检测技术的发展,世界各地的实验研究积累了大量的SNP数据,但是目前尚无一个全面综合的SNP数据库。SNP在致病基因发现、司法鉴定、个体化医疗等...
全基因组分析单核苷酸多态性对多聚腺苷化信号的影响,黄蓉婷,吉国力,单核苷酸多态性(single nucleotide polymorphism,SNP),主要是指在基因组水平上由单个核苷酸的变异所引起的DNA序列多态性,是人类可遗传的
java_polymorphism 有关多态性,抽象类和继承的一些代码
Get a grounding in polymorphism and other fundamental aspects of object-oriented program design and implementation, and learn a subset of design patterns that any practicing Java professional simply ...
Java编程老鸟潜心写作,奉献高效率的Java学习心得 完全站在没有编程经验读者的角度,手把手教会读者学习Java 配16小时多媒体教学视频,高效、直观 一一击破Java入门可能会遇到的难点和疑惑 抽丝剥茧,层层推进,让...
Get a grounding in polymorphism and other fundamental aspects of object-oriented program design and implementation, and learn a subset of design patterns that any practicing Java professional simply ...
.NET中的多态性 一个演示如何使用C#在.NET中显示多态性。 该演示分为两个部分,“静态多态性”和“动态多态性”。 “静态多态”具有“索引器超载”,“方法超载”和“运算符超载”,而“动态多态”具有“委托多态”...
code for understanding java polymorphism,测试代码
5.6.4Java实例——多次Undo(取消)操作 231 5.6.5优势和缺陷 236 5.6.6应用情景 236 5.7ObserverPattern(观察者模式) 236 5.7.1定义 236 5.7.2现实例子——拉登现身了 238 5.7.3C#实例——猫和老鼠 238 ...
5.6.4Java实例——多次Undo(取消)操作 231 5.6.5优势和缺陷 236 5.6.6应用情景 236 5.7ObserverPattern(观察者模式) 236 5.7.1定义 236 5.7.2现实例子——拉登现身了 238 5.7.3C#实例——猫和老鼠 238 ...
多态性(polymorphism)是面向对象程序设计的一个重要特征。如果一种语言只支持类而不支持多态,是不能被称为面向对象语言的,只能说是基于对象的,如Ada、VB就属此类。C++支持多态性,在C++程序设计中能够实现多态性...
完整版 杭州电子科技大学JAVA语言程序设计 JAVA_01 Java概述与应用 前言 学习java前的准备工作 (共4页).ppt 完整版 杭州电子科技大学JAVA语言程序设计 JAVA_02 面向对象(OO)程序设计概念 (共51页).PPT 完整版 ...
Java编程老鸟潜心写作,奉献高效率的Java学习心得 完全站在没有编程经验读者的角度,手把手教会读者学习Java 配16小时多媒体教学视频,高效、直观 一一击破Java入门可能会遇到的难点和疑惑 抽丝剥茧,层层推进,让...
完整版 杭州电子科技大学JAVA语言程序设计 JAVA_01 Java概述与应用 前言 学习java前的准备工作 (共4页).ppt 完整版 杭州电子科技大学JAVA语言程序设计 JAVA_02 面向对象(OO)程序设计概念 (共51页).PPT 完整版 ...
Polymorphism
单核苷酸多态性(single nucleotide polymorphism,SNPs),即在基因组水平上由单个核苷酸的变异而引起的DNA序列多态性变化,具体是指在DNA序列中的单个碱基的变异,其是人类基因组变异种最常见的一种。SNP研究最主要的...