接口--多态(向上造型--向下造型)

*接口:
           有时,我们需要从多个不相关的类中设计出一个子类型,而java继承是单继承的特点,无              法满足我们的需求,
           所以,我们可以使用"接口"来达到多继承的目的.
           
           接口实际上就是一种规范制度
  --特点:
    (1)接口使用interface关键字,而不是class
        但是我们可以理解成接口是特殊的抽象类
    (2)接口里只能有抽象方法和常量
    (3)接口不能实例化,没有意义
    (4)###接口不能提供构造器
    
  --接口中的常量:
                 默认修饰词为public static final
                 
  --接口中的方法:
                 默认修饰词为public abstract               
                          
  --接口的实现:
      (1)子类需要实现接口中的所有抽象方法
      (2)使用implements关键字进行实现
      (3)如果子类没有实现所有抽象方法,那么子类需要用abstract修饰   
      (4)子类可以实现多个接口,接口间使用逗号(,)分开
    
  --接口间的继承
    (1)接口与接口之间可以使用继承
         子接口继承了父接口的抽象方法
    (2)支持多继承


*多态:面向对象的特征之一                          
    
    --向上造型:
      (1)父类型的变量指向不同类型的子类型.
          调用的功能有不同的实现 
         Animal  a =  new  Dog();
         a.noise();//叫   
         a = new Cat();
         a.noise();//叫   
         
      (2)不同的父类型变量指向同一个对象有不同的功能
            ZhengYangDoor  a  = new  ZhengYangDoor();
            a.theftproof();//防盗
            a.openDoor();//开门
            InterA   ia = a;
            ia.theftproof();   
                          
                   
     --向下造型:
                        将父类型(接口)的变量赋值给子类型或者其他父类型(接口)的变量
         
         Animal a = new Dog(); 
         Dog dog  = (Dog)a;
         dog.吃骨头();
        
         Cat cat = (Cat)a;//编译通过,语法正确,运行期间,造型错误
         cat.扑捉老鼠();
        
                        运行期间有可能会发生(类造型异常):java.lang.ClassCastException 
        
    
                       为了避免出现错误:我们需要使用关键字instanceof来判断
                        对象是不是要转换成的类型
           if(a instanceOf Cat){
             Cat cat = (Cat)a;
          }               
               


                                                                                

猜你喜欢

转载自blog.csdn.net/yk_3215123/article/details/81462373