189 8069 5689

java中多态代码例子 举例说明JAVA中实现多态的方法

JAVA代码编写,多态

第一步:创建一个父类,如Animal(动物) 类,这个方法中只有方法的定义,没有实现。第二步:创建一个子类,如cat(猫)类,这个方法中实现父类中的所有方法,并进行重写。

我们提供的服务有:网站制作、网站设计、微信公众号开发、网站优化、网站认证、正定ssl等。为上1000+企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的正定网站制作公司

第三步:创建一个子类,如dog(狗)类,这个方法中实现父类中的所有方法,并进行重写。

备注:多态实际上是一个父类有特定的属性,如动物有名称、年龄、所属科目,之后由子类去实现具体的,如猫,名称是猫,年龄是5岁,所属科目为猫科,然后狗同样有这些属性,只不过是值不同,这个就是一个多态的形式。子类可以有无限多,在步骤三后面添加即可。

关于Java多态的实例分析

1--:a1是类A的实例,所以只能调用A类中的show方法,参数b是类B的实例,B又是A的子类,所以只能调用类A中参数是A obj的那个方法,因为b只能转换为父类型A,不能转换为子类型D

2--:道理同上。

3--:道理同上。

由于前三条的变量类型和对象类型相同,不涉及多态,仅仅是重载的问题。

4--:此条代码是难点,这里涉及到了重写和重载的概念,把重写和重载彻底理解了,你就知道为什么输出是B and A了。重写是子类中的方法和父类中的方法同名,同返回类型,同类型参数。

而重载是同一个类中的两个方法(注意是同一个类中),名相同,但是参数类型不同或者数量不同。因为a2引用的是B类的实例,所以要去B类中找重写的show方法,而不是重载的。所以只能调用参数类型是A的那个方法。

5--:道理同第4条。

6--:B类中继承了A类的参数为D类型的show方法,只继承而没有重写。也就是B类中实际有三个方法,所以此条代码调用的是参数为D的方法。

7--:把上面的都理解了。7,8,9条代码就很容易理解了。

7,8,9和1,2,3一样不存在多态,仅仅是重载方法的调用。多态是父类变量引用子类对象才会发生的。变量类型和对象类型相同,只会涉及重载,和重写无关。

你发的这段代码,我在网上找到了一个博文,看了他的解释,开始我觉得很难理解,后来才明白,他的解释是混乱的。正确的原理是重写和重载。只要你把重写和重载的区别理解透彻,这段代码就容易理解了。

用Java继承和多态实现编写代码

代码如下:

abstract class DongWu {

public abstract void info();

}

class Bird extends DongWu {

@Override

public void info() {

System.out.println("我是一只鸟。");

}

}

class Fish extends DongWu {

@Override

public void info() {

System.out.println("我是一条鱼。");

}

}

public class App5 {

public static void main(String[] args) {

DongWu bird = new Bird();

bird.info();

DongWu fish = new Fish();

fish.info();

}

}

JAVA中多态是怎么一回事,能不能举个例子,嗷嗷感谢!

java多态其实很简单的....java多态必须满足三个条件:1、继承2、子类重写父类方法3、父类引用调用子类对象接下来用例子一步一步解释分别是什么意思......继承:公司员工 有测试员、开发员和项目经理 他们都有一些共同的属性比如 年龄、性别、家庭地址、工资等。这时就可以将她们抽象出一个类出来 person 包括这些共同的属性。然后测试员、开发员和项目经理去继承这个类person后,就拥有了这些属性了。子类重写父类方法:测试员、开发员和项目经理的工资是不一样的,他们又从继承了工资这个属性,显然不能达到要求。此时就必须重写从父类继承过来的这个方法。父类引用调用子类对象:Person person = new Manager() 代码:pulbic Person {

public void 工资() { System.out.println(3000);

}}

//=========================================

public Manager extends Person { //满足条件1 继承 public void 工资() { //满足条件2 子类重写父类方法 System.out.println(5000);

}

}//=========================================public Demo { public static void main(String[] args) {

Person person = new Manager(); //满足条件3 父类引用调用子类对象

person.工资(); //打印 出5000;

}

}

Java程序如何实现多态

多态,就是重载和重写.重载发生在一个类中.重写发生在子类,意思就是子类重写父类相同名称的方法.刚学语言有的东西,不必搞得那么清楚,只有知道怎么用就行了,有的问题你要想真正把它搞得很懂,短时间是不可能的,比如说接口,没有几年工作经验你根本不可能真正理解什么是接口,甚至有的人工作四,五年也没搞明白什么是接口,不要花太多时间去搞这些不容易搞懂的问题.

重载的特性,方法名相同.返回类型,传入方法的参数不同(包括个数和类型).

重写的特性,方法名相同,返回类型,参数均相同,必须发生在子类.

1.Java语言允许某个类型的引用变量引用子类的实例,而且可以对这个引用变量进行类型转换。

Animal animal=new Dog(); //引用变量animal引用一个Animal子类Dog的实例

Dog dog=(Dog)animal; //向下转型,把Animal类型转换为Dog类型

Creature creature=animal; //向上转型,把Animal类型转换为 Creature类型

animal=new Cat(); //引用变量animal引用另一个Animal子类Cat的实例

注:Creature这里指的是生物。

2.如果把引用变量转换为子类类型,称为向下转型,如果把引用变量转换为父类类型,称为向上转型。

3.在进行引用变量的类型转换时,会受到各种限制。而且在通过引用变量访问它所引用的实例的静态属性、静态方法、实例属性、实例方法,以及从父类中继承的方法和属性时,Java虚拟机会采用不同的绑定机制。

4.成员变量、静态方法按照引用变量声明的类型静态绑定;实例方法按照引用变量引用的实例动态绑定。

例如,对于以下这段代码:

Fathers f=new Sons();

System.out.println(“f.var=”+f.var);

System.out.println(“f.staticVar=”+f.staticVar);

f.method();

f.staticMethod();

运行时将会输出如下结果:

f.var=FatherVar

f.staticVar=StaticFaterVar

Son method

Static Father method

class Fathers{

String var="FatherVar";

static String staticVar="StaticFatherVar";

void method(){System.out.println("Father method");}

static void staticMethod(){System.out.println("Static Father method");}

}

class Sons extends Fathers{

String var="SonVar";

static String staticVar="StaticSonVar";

void method(){System.out.println("Son method");}

static void staticMethod(){System.out.println("Static Son method");}

String sonVar=null;

void sonMethod(){}

}

JAVA多态经典例题

System.out.println("1--" + a1.show(b));

a1是A类引用指向A类对象,不存在多态,一定调用A类方法。A类方法有两个show(D)和show(A),b是B类引用无法转换为D类引用,但可以转换为A类引用,因此调用show(A),输出A and A。

System.out.println("2--" + a1.show(c));

输出A and A,原因同上。

System.out.println("3--" + a1.show(d));

调用show(D),输出A and D。

System.out.println("4--" + a2.show(b));

a2是A类引用指向B类对象,可能存在多态。b是B类引用无法转换为D类引用,但可以转换为A类引用,因此调用show(A),而B类重写了show(A),因此调用的是重写后的show(A),输出B and A。

System.out.println("5--" + a2.show(c));

同上,C类引用无法转换为D类引用,但可以转换为A类引用,因此调用show(A),输出B and A。

System.out.println("6--" + a2.show(d));

调用show(D),show(D)又调用父类即A类的show(D),输出A and D

System.out.println("7--" + b.show(b));

b是B类引用指向B类对象,不存在多态,一定调用B类方法。B类一共有三个方法:重写自A类的show(A)和show(D),以及新定义的show(B)。show(b)调用show(B)方法,输出B and B

System.out.println("8--" + b.show(c));

C类继承自B类,也调用show(B)方法,输出B and B

System.out.println("9--" + b.show(d));

调用show(D),show(D)又调用父类即A类的show(D),输出A and D


分享文章:java中多态代码例子 举例说明JAVA中实现多态的方法
转载注明:http://cdxtjz.com/article/doogopd.html

其他资讯