多态和抽象


多态  
多态有两种理解方式:  
1.对象的不同的方法可以用相同的一个方法名,也就是重载的概念。(静态多态)  
2.同一对象根据不同的消息执行相应的行为,也可以这样认为发送消息给某一个对象,让对象自行选择哪种相应的行为。(动态多态)  
多态的技术基础  
向上转型技术:一个父类的引用变量可以指向不同的子类对象,或者说一个子对象可以被当作一个父类类型。  
向上转型只能访问到父类,子类重写的方法子类独有的方法无法访问到。**  

           Pet dog=new Dog();   
instanceof关键字:用于判断运行时对象的真正类型。  

       animal instanceof Dog;  
动态绑定技术:运行时根据父类引用变量所指对象的实际类型执行相应的子类应运,从而实现多态性。  
静态绑定:是指在程序执行前方法已经被绑定,此时由编译器或其它连接程序实现。在Java中的方法只有final、static、private和构造器是前期绑定  

向下转型:  

    public class AnimalUtil {//喂养宠物
      public void fun(Animal animal){  
        animal.eat();  
        if (animal instanceof Dog) {  
            Dog d=(Dog)animal;  
            d.dogSay();  
        }else if (animal instanceof Cat) {  
            Cat c=(Cat)animal;  
            c.catSay();  
        }  
      }  
    }  
多态参数   
当方法的某个形式参数是一个引用的时候,与该引用兼容的任何对象都可以传递给方法,从而允许方法接受不同数据类型的形式参数。  
       public void eat(People p){
    }   
多态总结  
使用父类类型的引用指向子类的对象。  
该引用只能调用父类中的方法,不能调用子类中独有的方法。  
如果子类中重写了父类中的一个方法,参调用这个方法的时候,将会调用子类中的这个方法。  
在多态中,子类可以调用父类中的所有方法。  
抽象  

抽象方法:只声明不实现的方法(用关键字abstract)
抽象方法必须在抽象类中  
子类必须实现(重写)抽象方法,除非子类本身也是抽象的。  
抽象类不能直接实例化。**  

posted @ 2017-01-02 19:26  ke12  阅读(112)  评论(0)    收藏  举报