Java中多态定义是什么?特点是什么?为什么要用多态?
Java中多态定义是什么?特点是什么?为什么要用多态?
------解决方案--------------------给你个最简单的解释吧
多态就是同一个方法名的多种不同实现
所谓的不同实现,是指参数的个数或类型的不同,返回类型可同也可不同
为什么要用多态呢??这么给你举个例子,eat,通用是吃
你eat(苹果),甜吧?? 但是要是让你eat(黄连),那就是苦的咯
也就是同一种方名,但是不同的时候(参数)做不同的事
------解决方案--------------------放屁...
你这说的是重载吧..
多态有3个条件
1:继承
2:重写(重写父类继承的方法)
3:父类引用指向字类对象
多态的话还涉及到有个转型的问题
多态还算蛮复杂的
把一些基础的东西先学好..
慢慢就懂了
------解决方案--------------------又放屁.
class A{
 public method(){
    ......
  }
}
class A1 extends A {
 public method(){
    ......
  }
}
class A2 extends A{
 public method(){
    ......
  }
}
main 方法
 A a=new A1(); 出现多态了,对象的引用指向了他子类A1的new出来的对象  ,method方法的指针已经指向A1的method,当他调用method方法时候,调的就是A1的方法
 a.method(); 调用A1的method方法,跟重载没关系.只有重写
  A a=new A2(); 出现多态了,对象的引用指向了他子类A2的new出来的对象  ,method方法的指针已经指向A2的method,当他调用method方法时候,调的就是A2的方法
  a.method(); 调用A2的method方法,跟重载没关系.只有重写
------解决方案--------------------interface   Parent  
{  
       String   method();  
}  
class   Child1   implements   Parent  
{  
       public   String   method()  
       {  
               return   "Child1 ";  
       }  
}  
class   Child2   implements   Parent  
{  
       public   String   method()  
       {  
               return   "Child2 ";  
       }  
}  
public   class   Test  
{  
       public   static   void   main(String[]   args)  
       {  
               Parent   parent   =   new   Child1();  
               System.out.println(parent.method());  
               parent   =   new   Child2();    
               System.out.println(parent.method());  
       }  
}  
输出结果:  
Child1  
Child2  
只有多个子类从一个父类继承或实现一个接口。   在建立这些子类实例时,都用父类或接口做为变量类型,如上例中的parent。也就是说,用户对应的接口都是一个Parent。而由于new后面的子类不同,而产生调用同一个方法method返回不同结果的显现叫多态。就是同一个方法在使用不同子类时有不同的表现(在这里是不同的返回值)。  
方法重载不叫多态。 (转)
------解决方案--------------------在下刚学Java不久,也来说说对Java中多态的认识,请大家指正!
  Manager extends Employee之后:
-------------------------------------------------
(一)
Employee e = new Manager();
此为多态:父类引用指向子类对象。
-------------------------------------------------
(二)
void methodA(Employee e){
}
main方法中,可以使用 “对象.methodA(new Manager());”来调用这个方法
参数多态!
-------------------------------------------------
(三)
Employee[] e = new Employee[10];
e[0] = new Manager();
这是多态特性!
-------------------------------------------------
(四)jdk1.5中
Employee doSomething(){
   return new Manager();
}
返回值多态!
-------------------------------------------------
(五)
如果Employee和Manager中有如下代码:
class Employee {
   public String name="张三";
   public void m1(){
       System.out.println("Employee::m1()");
   }
}
class Manager extends Employee {	
   public String name="李四";
   public void m1(){
       System.out.println("Manager::m1()");
   }
}
再使用如下代码时:
Employee e = new Manager();
System.out.println(e.name);
e.m1();
//结果会打印出“张三”和“Manager::m1()”。
这是多态中的动态绑定:JVM会自动找到对象e是由Manager类实例化而来的,所以有‘覆盖’时调用Manager中的方法;而属性则不会被动态绑定,所以一定是Employee 中的(e的数据类型被声明为Employee了)。