黑马程序员技术交流社区
标题:
看到天天有人说多态,多态是什么?
[打印本页]
作者:
陈善奔
时间:
2013-12-26 13:26
标题:
看到天天有人说多态,多态是什么?
本帖最后由 陈善奔 于 2013-12-26 20:43 编辑
看到天天有人说多态,多态是什么?最好有代码例子!
作者:
FFF
时间:
2013-12-26 13:32
多态,就是可以用多种方式处理传进来的不同问题。
继承,重载,重写。就是多态的体现。
作者:
静心远行
时间:
2013-12-26 13:55
用对象来解释就是:对于同样的一个消息,不同的对象有不同的反应。这主要是通过类的继承、重写实现的。
作者:
刘旭升
时间:
2013-12-26 14:06
讲下多态的定义:①操作名称的多态,就是重载:有多个操作(方法)具有相同的名字,但是传入的参数不同。例如-->
nihao(){}//1
nihao(int a ){}//2
nihao(int a,b){}//3
nihao(float a){}//4
复制代码
上面四个都是方法,名称相同,但是参数不同。调用他们时:nihao();nihao(2);nihao(2,3);nihao(2.3);
作者:
路国强
时间:
2013-12-26 14:07
我自己的理解。一个事物有多种体现形式,给你举个例子吧,比如动物这一事物,猫,狗,猪都是动物的体现形式。再比如人这一事物,有学生,工人,老师。诸如此类就是多态了。体现多态的机制:父类对象可以指向子类的引用,例如Person p = new Student();我是这么理解的。
作者:
刘旭升
时间:
2013-12-26 14:25
②与继承有关的多态:同一操作被不同类型调用时可能产生不同的行为。
这个在抽象类中或者接口中很常用。例如:
class Animal{
void cry(){}
}
class Dog extends Animal{
void cry(){
System.out.println("WangWang...");
}
}
class Cat extends Animal{
void cry(){
System.out.println("miao...");
}
}
public class Test{
public static void main(String args[]){
Animal animal;
animal=new Dog():
animal.cry();
animal=new Cat();
animal.cry();
}
}
复制代码
animal.cry()都是调用哭的方法,但是由于不同对象的上转型对象(这个你看了就应该知道,就是子类引用指向父类对象)。所以产生了不同的行为。这个多态是很有用的,可以实现开闭源。一定要看懂。{:soso_e130:}
作者:
lichao
时间:
2013-12-26 15:16
多态:
指允许不同类的对象对同一消息作出响应。说通俗一点就是父类对象的引用
子类对象
如:
abstract class Animal//接口 //多态的前提是必须有继承或实现,必须有方法重写或覆盖
{
abstract void eat();
}
class Cat extends Animal//实现类
{
public void eat()//覆盖方法
{
System.out.println("吃鱼");
}
public void catchMouse()
{
System.out.println("抓老鼠");
}
}
class Dog extends Animal//实现类
{
public void eat()//覆盖方法 {
System.out.println("吃骨头");
}
public void kanJia()
{
System.out.println("看家");
}
}
class Pig extends Animal//实现类
{
public void eat()//覆盖方法 {
System.out.println("饲料");
}
public void gongDi()
{
System.out.println("拱地");
}
}
//-----------------------------------------
class DuoTaiDemo
{
public static void main(String[] args)
{
//Cat c = new Cat();
//c.eat();
//Dog d = new Dog();
//d.eat();
//Cat c = new Cat();
/*
Cat c1 = new Cat();
function(c1);
function(new Dog());
function(new Pig());
*/
//Animal c = new Cat();
//c.eat(); Animal a = new Cat();//多态 Animal a = new Dog();//多态 Animal a = new Pig();//多态
function(new Cat());
function(new Dog());
function(new Pig());
}
public static void function(Animal a)//Animal a = new Cat();//多态
{
a.eat();
//a.catchMouse();
}
/*
public static void function(Cat c)//
{
c.eat();
}
public static void function(Dog d)
{
d.eat();
}
public static void function(Pig p)
{
p.eat();
}
*/
}
复制代码
多态的好处 多态的出现大大的提高程序的扩展性。多态的弊端: 提高了扩展性,但是只能使用父类的引用访问父类中的成员。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2