2 llo3321 llo3321 于 2016.02.25 11:27 提问

JAVA多态和非多态有什么区别,觉得没有什么不同啊?

图片说明

7个回答

zrf1335348191
zrf1335348191   2016.02.25 13:00

多态是说,
1,假设有个球对象,有子类篮球,乒乓球,羽毛球,每个子类里覆写了父类的tostring方法。。
2,如果你创建三个球对象,分别用子类New出来,对象是球对象,然后去调用tostring方法,虽然都是球对象,但会去调用不同类中的tostring方法,这就是多态

bdmh
bdmh   Ds   Rxr 2016.02.25 11:28

你只是看到了结果的一样吧,你还是仔细看看面向对象的多态,查查多态的应用,深入理解下,最好结合一些实际例子,书上讲的太简单,根本没法让你理解多态

mouyong
mouyong 回复llo3321: 那是因为你没有正确的使用多态。所谓繁琐,你是指写代码的时候更繁琐么?如果是,那么你就完全没理解多态的目的是啥了
2 年多之前 回复
llo3321
llo3321 可是非多态可以实现和多态一样的功能,而且新增一个功能还更繁琐,那为何还要使用多态呢?
2 年多之前 回复
llo3321
llo3321 可是非多态可以实现和多态一样的功能,而且新增一个功能还更繁琐,那为何还要使用多态呢?
2 年多之前 回复
daweibalang717
daweibalang717   2016.02.25 11:46
wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.02.25 12:48

你应该先了解下多态的含义:对于相同类型的不同实现,该类型的行为是由具体指向的类型决定的。
比如,都是动物,都会有叫的行为,但是不同动物,叫的行为方式不同,这就是多态。这就对应着一种编程原则:面向抽象编程,定义变量时用抽象的类型,真正赋值的类型由客户端按照实际情况执行真实的实现类。

wojiushiwo945you
wojiushiwo945you 回复llo3321: 非多态,没听过这个概念啊。方法就有静态和非静态方法之说,而静态方法是没有多态这个概念的。
2 年多之前 回复
llo3321
llo3321 这些我都知道,你能说说多态能实现但非多态不能实现的功能呢?谢谢
2 年多之前 回复
sinat_31535993
sinat_31535993   Rxr 2016.02.25 14:11

你好像在说new子类就调子类的方法了,父类就没啥关系了,结果父类还要多写一个方法,直接在子类中写就好了,这样父类中就少写一个方法了。
你这个思想就是没有明白父类是干嘛的。什么是父类,父类就是提取相同元素而凝聚成的。
举个例子:父类动物有个描述的方法“它是一只强大的猛兽!”,当你在写子类时,对于老虎,狮子这种野兽来说,这个描述的正确的,那么你就没有必要去重写这个方法,那你在子类中就少写了2个方法。
父类主要就是来提取子类中某些共同的特性,以达到减少子类重复定义。如果每个类的特性都不一样,那就没有必要提前一个父类出来。
错误的例子:老鼠,老虎,老鹰,他们都有捕食这个方法,但他们每个捕食都是独特的,强行提取父类,只会造成你说的那样,多写一个父类和一个父类方法

beacon_2011
beacon_2011   Rxr 2016.02.25 17:39

允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式
他只是给你提供了这样一种性质,方便继承

enpterexpress
enpterexpress   Rxr 2016.02.25 21:16
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C++和java多态的区别
多态在 Java 和 C++ 编程语言中的实现比较 刘 冠群, 软件工程师, IBM 简介: 面向对象编程语言的一个重要特性就是多态,它使得可以用基类的指针或引用指向派生类的对象,而在具体访问时实现方法动态绑定。本文主要探讨多态在当前最流行的两种编程语言 C++ 和 Java 中的实现,并对其中的异同进行了比较,使读者对其有全面的理解,以便更好的在编程中正确
Java 与 C++ 中的多态区别
Java 与 C++ 中的多态区别1.先看C++#include <iostream> using namespace std; class Person{ public:int x=1,y=1; void Show() { cout << "I am a Person " <<x<<y<< endl; } }; class Student:public Person{ p
python中多态与java中多态
python中多态  A function that can operate on more than one type. If all the operations in a function can be applied to a type, then the function can be applied to a type. 一个函数可以使用在不同的类型数据上称为多态 ,我顿时想到
java中重写、重载、多态几个概念区别分析
最近发现这几个概念有点混淆不清了。特意小结了一下,来帮助理清思路。         重写也称作覆盖,是指在继承关系中,子类并不想完全继承父类方法,而是想做自己的一些修改,可以让子类重写父类方法,使该方法和父类具有相同的名称和参数,而方法体可以和父类不同,重写是父类和子类多态性的体现。要注意的是子类函数的访问修饰权限不能少于父类的。         class Animal { public
java 什么是多态和作用
      多态通过分离做什么和怎么做,从另一个角度将接口和实现分离开来。多态不但能够改善代码的组织结构和可读性,还能创建可扩展的程序,无论在项目最初还是添加新功能的时候都是可“生长”的程序。简单的来说多态就是将派生类的引用赋给基类,并通过基类的引用调用派生类的方法(前提派生类覆盖了基类的方法)。多态也称动作绑定,后期绑定或运行时绑定。对于不了解方法重写和向上转型的人们来说是很难理解多态的(下面将会介绍)。多态的作用是消除类型之间的耦合关系。 方法重写(Override)和向上转型       方法重写很容
java 什么是多态?多态的三种表现形式?什么是向上转型和向下转型?多态的利和弊?
一、多态是继封装、继承之后,面向对象的第三大特性。现实事物经常会体现出多种形态,如学生,学生是人的一种,则一个具体的同学张三既是学生也是人,即出现两种形态。 Java作为面向对象的语言,同样可以描述一个事物的多种形态。如Student类继承了Person类,一个Student的对象便既是Student,又是Person。一个Student对象既可以赋值给一个Student类型的引用,也可以赋值给一
Java基础之多态的详细解释
http://www.cnblogs.com/xdp-gacl/p/3644035.html 一、面向对象最核心的机制——动态绑定,也叫多态    1.1.通过下面的例子理解动态绑定,即多态 1 package javastudy.summary; 2 3 class Animal { 4 /** 5 * 声明一个私有的成员变量nam
【超经典】Java多态有什么好处?怎样用?
多态可以分为变量的多态,方法的多态,类的多态.我这里强调的是类的多态,这是在以后的工作中经常会用到的。多态的表现形式有方法重载,方法改写,多态变量和泛型。重载是一种静态的多态性,在程序编译时确定被调用的方法,称为早绑定。而多态变量和改写相结合之后,方法的调用在运行时才能确定,是动态的多态性,称为晚绑定。 首先,有这样一个系统:有个学生从兰理工毕业了,做得还不错.买了辆捷达汽车.这个系统应
【java】【多态】的一个小例子
首先要了解什么是多态? :在面向对象语言中,接口的多种不同的实现方式即为多态。具体来说,就是不同子类作为参数使用同一父类的方法 时的实现方法是不同的。   多态的表现形式有哪些? 1.重载overload,是发生在同一类里的。 标识一个函数除了函数名外,还有函数的参数(个数和类型),也就是说,一个类中可以有两个或更多的函数,叫同一个名字而他们的参数不同。简单来说 就是对重名函数进行重写
java的两种多态
     1. Java中除了static和final方法外,其他所有的方法都是运行时绑定的。private方法都被隐式指定为final的,因此final的方法不会在运行时绑定。当在派生类中重写基类中static、final、或private方法时,实质上是创建了一个新的方法。     2.在派生类中,对于基类中的private方法,最好采用不同的名字。     3.包含抽象方法的类叫做抽