接口;多态

接口:

        有时我们需要从多个不相关的类中设计出一个子类型,而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来判断对象是不是要转换成的类型

 

接口里的常量默认用public static final 修饰
接口里的方法默认使用public abstract 修饰

     

类B重写了A中所有的抽象方法,所以类B不需要abstract修饰

类C没有重写A接口的所有抽象方法需要用abstract修饰

接口与接口之间可以多继承

将父类型的变量赋值给子类型

同一个父类的变量指向不同子类的对象

不同的父类型变量指向同一个对象

猜你喜欢

转载自blog.csdn.net/K_KingoneTen/article/details/81459565
今日推荐