java中的多态的定义是什么啦 什么情况下使用多态啊?多态有什么作用
4个回答
展开全部
多态源于继承,龙生九子,九子不同,九子都不一样就是多态,九子源于龙,这就是继承。
多态就是让我们制造出自己想要的东西。
写一个画图的类DrawA,定义一个画图的方法a()。
我想画个正方形,这时候定义一个正方形类DrawSquare extends DrawA,重写a();方法,方法里边去画正方形。
我想去画个圆形,这时候定义一个圆形类DrawCircular extends DrawA,重写a();方法,方法里边去画圆形。
这就叫多态。
肯定不严谨,基本上是这个意思。
多态就是让我们制造出自己想要的东西。
写一个画图的类DrawA,定义一个画图的方法a()。
我想画个正方形,这时候定义一个正方形类DrawSquare extends DrawA,重写a();方法,方法里边去画正方形。
我想去画个圆形,这时候定义一个圆形类DrawCircular extends DrawA,重写a();方法,方法里边去画圆形。
这就叫多态。
肯定不严谨,基本上是这个意思。
展开全部
多态的应用 举个例子
你创建个个动物类
然后 又创建个猫类 、狗类并且都继承 动物类。
在猫类狗类中 有 各自动物的说明 方法 show方法
那么 你如果要随意一个动物做参数 就会显示各自的说明 那么就可以用一个 show 方法完成
因为 都继承 动物
那么 参数只要是动物 就行了 传入的猫类或者狗类都转型为动物类
然后就可以 用一个函数 完成这个功能
而不用 写2个函数来重载
你创建个个动物类
然后 又创建个猫类 、狗类并且都继承 动物类。
在猫类狗类中 有 各自动物的说明 方法 show方法
那么 你如果要随意一个动物做参数 就会显示各自的说明 那么就可以用一个 show 方法完成
因为 都继承 动物
那么 参数只要是动物 就行了 传入的猫类或者狗类都转型为动物类
然后就可以 用一个函数 完成这个功能
而不用 写2个函数来重载
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个主要用于子类与父类之间的强制类型转换
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。
赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。也就是说,父亲的行为像儿子,而不是儿子的行为像父亲。
举个例子:从一个基类中派生,响应一个虚命令,产生不同的结果。
比如从某个基类继承出多个对象,其基类有一个虚方法Tdoit,然后其子类也有这个方法,但行为不同,然后这些子对象中的任何一个可以赋给其基类对象的引用,或者将子对象地址赋给基类指针,这样其基类的对象就可以执行不同的操作了。实际上你是在通过其基类来访问其子对象的,你要做的就是一个赋值操作。
使用继承性的结果就是可以创建一个类的家族,在认识这个类的家族时,就是把导出类的对象当作基类的对象,这种认识又叫作upcasting。这样认识的重要性在于:我们可以只针对基类写出一段程序,但它可以适应于这个类的家族,因为编译器会自动就找出合适的对象来执行操作。这种现象又称为多态性。而实现多态性的手段又叫称动态绑定(dynamic binding)。
简单的说,建立一个父类的对象,它的内容可以是这个父类的,也可以是它的子类的,当子类拥有和父类同样的函数,当使用这个对象调用这个函数的时候,定义这个对象的类(也就是父类)里的同名函数将被调用,当在父类里的这个函数前加virtual关键字,那么子类的同名函数将被调用。
多态,是面向对象的程序设计语言最核心的特征。多态,意味着一个对象有着多重特征,可以在特定的情况下,表现不同的状态,从而对应着不同的属性和方法。从程序设计的角度而言,多态可以这样来实现(以java语言为例):
public interface Parent // 父类接口
{
public void simpleCall();
}
public class Child_A implements Parent
{
public void simpleCall()
{
//具体的实现细节;
}
}
public class Child_B implements Parent
{
public void simpleCall()
{
//具体的实现细节;
}
}
//当然还可以有其他的实现
然后,我们就可以看到多态所展示的特性了:
Parent pa = new Child_A();
pa.simpleCall()则显然是调用Child_A的方法;
Parent pa = new Child_B();
pa.simpleCall()则是在调用Child_B的方法。所以,我们对于抽象的父类或者接口给出了我们的具体实现后,pa 可以完全不用管实现的细节,只访问我们定义的方法,就可以了。事实上,这就是多态所起的作用,可以实现控制反转这在大量的J2EE轻量级框架中被用到,比如Spring的依赖注射机制。
赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。也就是说,父亲的行为像儿子,而不是儿子的行为像父亲。
举个例子:从一个基类中派生,响应一个虚命令,产生不同的结果。
比如从某个基类继承出多个对象,其基类有一个虚方法Tdoit,然后其子类也有这个方法,但行为不同,然后这些子对象中的任何一个可以赋给其基类对象的引用,或者将子对象地址赋给基类指针,这样其基类的对象就可以执行不同的操作了。实际上你是在通过其基类来访问其子对象的,你要做的就是一个赋值操作。
使用继承性的结果就是可以创建一个类的家族,在认识这个类的家族时,就是把导出类的对象当作基类的对象,这种认识又叫作upcasting。这样认识的重要性在于:我们可以只针对基类写出一段程序,但它可以适应于这个类的家族,因为编译器会自动就找出合适的对象来执行操作。这种现象又称为多态性。而实现多态性的手段又叫称动态绑定(dynamic binding)。
简单的说,建立一个父类的对象,它的内容可以是这个父类的,也可以是它的子类的,当子类拥有和父类同样的函数,当使用这个对象调用这个函数的时候,定义这个对象的类(也就是父类)里的同名函数将被调用,当在父类里的这个函数前加virtual关键字,那么子类的同名函数将被调用。
多态,是面向对象的程序设计语言最核心的特征。多态,意味着一个对象有着多重特征,可以在特定的情况下,表现不同的状态,从而对应着不同的属性和方法。从程序设计的角度而言,多态可以这样来实现(以java语言为例):
public interface Parent // 父类接口
{
public void simpleCall();
}
public class Child_A implements Parent
{
public void simpleCall()
{
//具体的实现细节;
}
}
public class Child_B implements Parent
{
public void simpleCall()
{
//具体的实现细节;
}
}
//当然还可以有其他的实现
然后,我们就可以看到多态所展示的特性了:
Parent pa = new Child_A();
pa.simpleCall()则显然是调用Child_A的方法;
Parent pa = new Child_B();
pa.simpleCall()则是在调用Child_B的方法。所以,我们对于抽象的父类或者接口给出了我们的具体实现后,pa 可以完全不用管实现的细节,只访问我们定义的方法,就可以了。事实上,这就是多态所起的作用,可以实现控制反转这在大量的J2EE轻量级框架中被用到,比如Spring的依赖注射机制。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |