多态性的表现形式

1.什么是多态

   面向对象的多态性就是将父类对象应用到子类对象的特征。简单地讲,多态指的就是在应用程序中出现的“重名”现象。多态性允许以统一的风格编写程序,以处理种类繁多的已存在的类和相关类。这样既降低了维护的难度,又节省了时间。

2.在java语言中,多态性体现在哪些方面

  1. 方法重载:    通常是指在同一个类中,相同的方法名对应着不同的方法实现,这些方法名相同的方法其区别在于他们需要的参数不同。即采用不同的方法形参表,区分重载方法要求形参在数据类型、个数和顺序的不同。(见实例2.1)
  2. 方法重写:    方法重写主要用于父类和子类间。子类重写父类的方法,只是对应的方法实现不同,其方法名和参数都相同。(见实例2.2)
  3. 抽象类:       在java语言中,一个类中的方法只给出了标准,而没有给出具体的实现方法,这样的类就是抽象类。例如父类就是抽象类,它不会被实例化的类。
  4. 接口:          在多态机制中,接口比抽象类使用起来更加方便。而抽象类组成的集合就是接口

实例2.1    该类中声明了两个show方法,但是两个方法的形式参数是不同,所以说第二个show方法重载了第一个show方法

 1 /* 定义类TestPolymorphisml*/
 2 public class TestPolymorphisml {
 3
 4     String s="这是方法重载的实例";
 5     String ss="这是一个TestPolymorphisml类";
 6     public void show(){
 7          System.out.println("我是show方法"+ss);
 8     }
 9     public void show( String str){     //这个方法就是对上一个show方法的重载,方法名相同,只是他们需要的形参不一样
10          System.out.println("我重载了show方法"+str);
11     }
12     public static void main(String[] args) {
13         TestPolymorphisml test = new TestPolymorphisml();
14         test.show(); //对象调用第一个show方法
15         test.show(test.s);  //调用重载的show方法
16     }
17 }

运行结果:

实例2.2 先新建一个A类,再建一个类继承A类,在子类中对父类的属性和方法进行重写

1 /*定义A类*/
2 public class A {
3     String a="我是A类";
4     public void showA(){
5         System.out.println(a);
6     }
7 }
 1 /*定义类TestPolymorphism2  让它继承A类*/
 2 public class TestPolymorphism2 extends A{
 3     String b="我是重写方法"; //这是对父类的a属性的重写
 4      public void showA(){  //这是对父类showA方法的重写
 5             super.showA(); //使用关键字super调用父类的showA方法
 6             System.out.println(b);
 7         }
 8     public static void main(String[] args) {
 9         TestPolymorphism2 n = new TestPolymorphism2(); //创建对象n
10         n.showA();
11     }
12 }

运行结果:

在实验中我们可以很清晰的看出多态性在java语言编程中占着多么重要的地位。

时间: 2024-08-03 17:23:59

多态性的表现形式的相关文章

面向对象思想的理解

面向对象(Object Oriented),如何翻译这个词有很多说法,有人说这个翻译不够准确,应该是“物件导向”更准确,个人认为这个词更直白更好理解,以“物件”为导向目标. 编写软件是为了解决某一问题,OO思想就是在编程过程中把“问题域”中的内容映射到软件系统中的一个个"物件"上,“物件”作为一个独立的个体,有自己的功能.状态以及与其他“物件”之间的联系,这些个体互相作用最终解决问题. oo是把“问题域”中的内容经过抽象分析,在软件的世界中创造与之对应的对象,这样在思考问题的解决时,更

Java多态性 抽象类

一   多态性是面向对象的三大特征之一               多态的含义是:对外一种表现形式,内在有多种具体实现 Java中多态的具体体现              方法重载              方法覆盖              多态参数(新内容,重点.难点) 多态环境下对象造型 向下造型 –又称向下转型 向上造型 –又称向上转型 例如:(里面包含了多态的对象造型等) public class aabb { public static void main(String[] args

Objective-C语言多态性

动态类型和动态绑定,id可以表示任何指针类型,定义id变量不加* 多态性是指在父类中定义的成员变量和方法被子类继承之后,可以具有不同的数据类型或表现出不同的行为.这使得同一个变量和方法在父类及其各个子类中具有不同的表现形式.我们通过一个例子理解什么多态,例如:“几何图形”类的“绘图”方法,在它的子类“椭圆形”和“三角形”中也都有“绘图”的方法,但是“绘图”方法功能都不同. Graphics(几何图形)类是Ellipse(椭圆形)类和Triangle(三角形)类的父类,Ellipse和Triang

多态性(C#)

在面向对象编程中继承性和多态性是重要机制,前面我为大家分享了我对“类的继承”的理解,哪么今天我就跟大家分享下我对“多态性(C#)”的理解. 首先我们先来看看多态的定义,同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果. C#中多态分为两种形式,一种是编译的多态,一种是运行的多态:而所涉及到多态的有重载.重写.虚方法.抽象方法和隐藏方法. 下面来看看这一段代码,我们从代码中来分析他们的概念及区别: public abstract class A { public abstract v

Java:多态性

Java的多态性:发送消息给某个对象,让该对象自行决定响应何种行为. 通过将子类对象引用赋值给超类对象引用变量来实现动态方法调用. java的多态性要满足三个条件: 1.继承关系 2.在子类重写父类的方法 3.父类引用指向子类的对象,即animal p = new dog() 在多态中非静态成员函数的特点: 在编译时期:参阅引用形变量所属的类中是否有要调用的方法.如果有,编译通过:否则,编译不通过 在运行时期:参阅对象所属的类中是否有要调用的方法.如果有,运行成功:否则,运行失败. 总结:编译时

Java面向对象设计主要有三大特征:封装性、继承性和多态性

一  封装性   1.1  概念:它是将类的一些敏感信息隐藏在类的类部,不让外界直接访问到,但是可以通过getter/setter方法间接访问. 1.2  目的:我们可以并且有可能在方法中,添加自己的限制,保证数据的有效性:从某种程度上说,封装也提高了代码的健壮性.安全性. 1.3  实现步骤:所有的成员变量全部私有化,格式 :private   数据类型  变量名  ,提供访问成员变量的getter/setter方法. 二  继承性   2.1  概念:子类通过一种方式来接受父类所有的公有的,

C++ 面向对象的三个特点--多态性(一)

C++的多态性定义 所谓多态性就是不同对象收到相同的消息产生不同的动作.通俗的说,多态性是指一个名字定义不同的函数,这些函数执行不同但又类似的操作,即用同样的接口访问功能不同的函数,从而实现“一个接口,多种方法”. 多态性又分为两种:一种是编译时的多态性,主要通过函数重载和运算符重载实现.一种是运行时的多态性,主要通过继承和虚函数来实现的. 这一部分,我们主要讲函数重载和继承与虚函数,运算符的重载我准备单独做一部分来记载. 函数重载 在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形参

【C++】多态性(函数重载与虚函数)

多态性就是同一符号或名字在不同情况下具有不同解释的现象.多态性有两种表现形式: 编译时多态性:同一对象收到相同的消息却产生不同的函数调用,一般通过函数重载来实现,在编译时就实现了绑定,属于静态绑定. 运行时多态性:不同对象在收到相同消息时产生不同的动作,一般通过虚函数来实现,只有在运行时才能实现绑定,属于动态绑定. 虚函数 虚函数是在基类中用关键字virtual 标识的成员函数,可以在一个或多个派生类中被重新定义.如果一个函数被定义为虚函数,那么,即使是使用指向基类对象的指针来调用该成员函数,也

【Java_基础】java中的多态性

方法的重载.重写和动态链接构成了java的多态性. 1.方法的重载 同一个类中多个同名但形参有所差异的方法,在调用时会根据参数的不同做出选择. 2.方法的重写 子类中重新定义了父类的方法,有关方法重写的规则请参考文章:Java中方法重写的注意事项. 3.动态链接 动态链接出现在父类引用指向子类对象的场景. 因为子类中有一个隐藏的引用super指向父类实例,当出现父类引用指向子类对象时,子类对象就会将其隐藏的父类实例返回给该父类引用.因此,父类引用还是指向了父类实例,而不是像表面看到的那样指向了子