多态


多态的含义是:对外一种表现形式,内在有多种具体实现。

Java中多态的具体体现 方法重载 方法覆盖 多态参数。

例如

package com.zr.duotai.text;

import java.util.Date;
public class Feed implements f{
 public void hava(){
        System.out.println(A+B+C);    
    };
    public static void main (String [] args){
        Person p=new Person();
        Dog88 d=new Dog88();
        p.feed(d);
        Cat88 c=new Cat88();
        p.feed(c);
     Feed l=new Feed();  
     l.hava();
     //Date date=new Date();
     Date date1 = new Date();
     long t = date1.getTime();
     Date date = new Date(t);
    //用t实例化一个date对象
     System.out.println(date);//输出时间 
    }
    void setTime(){
        
    }
}
class Animal88{
    int aa=12;
    void eat(){
        System.out.println("yibanshiwu");
    }
    }
    

class Dog88 extends Animal {
     static int aa=22;
    void eat(){
        System.out.println("狗吃骨头,是大事");
    }    
}
class Cat88 extends Animal{
    int aa=32;
    void eat(){
        System.out.println("猫吃鱼,是小事");
    }
}
class Person{
    void feed(Animal animal){  //参数多态
        System.out.println();
        animal.eat();    
    }
}
interface h{
    int A=22;
}
interface c{
    int B=22;
}
interface d{
    int C=22;
}
interface f extends h,c,d{
    abstract  void hava();
}
多态实质:编译期与运行期不同。
当编译器类型是父类,运行期类型是子类时,被称为父类引用指向子类对象
class  Animal{
               …… 
}
class Cat  extends Animal{
               ……
}
class Dog extends Animal {
               ……
}
Cat m = new Cat() 
Animal x = new Cat()  //Animal 的引用指向Cat的对象
在继承关系中变量不存在多态,变量是子类隐藏了父类变量。多态一般都发生在方法的重载(方法不能用static修饰)。
向上转型
class Animal{
     abstract void eat();
}
class Cat extends Animal{
      void look() {
    System.out.println("看家");
     }
    }      
 ………
   Animal x=new Cat()  //向上造型,Cat对象提升到Animal对象
   x.eat()   //只能使用父类中的方法
   x.look()  //报错!不能使用子类中的方法

向下造型

class Animal{
     abstract void eat();
}
class Cat extendsAnimal{
      void look() {
        System.out.println("看家");
        }
    }      
 ………
Animal x=new Cat()
Cat  m=(Cat)x;  //向下转型
   m.eat() ;
   m.look();//子父类中的方法都可以使用



 
原文地址:https://www.cnblogs.com/fy02223y/p/7152242.html