面向对象(2)

来源:互联网 发布:稻草人 男包 知乎 编辑:程序博客网 时间:2024/05/19 10:54
1、接口 :特殊的抽象类.   接口中的成员都是public

格式特点:接口中常见定义:常量,抽象方法

     接口中的成员都有固定修饰符。常量:publicstatic final

                                 方法:public abstract

接口是不可以创建对象的,因为有抽象方法,需要被子类实现,子类对接口中的抽象方法全部覆盖后,子类才可以实例化,否则子类是一个抽象类。     

接口可以被多实现,也是对多继承不支持的转换形式。java支持多实现。  

类与类之间是继承关系,类与接口之间是实现关系,接口与接口之间是继承关系,java只有接口之间存在多继承

接口特点:接口是对外暴露的规则;接口是程序的功能扩展;接口可以用来多实现;类与接口是实现关系,而且类可以继承一个类的同时实现多个接口;接口与接口之间可以有继承关系。

2、多态:事物存在的多种体现形态。父类引用指向子类对象

  •   多态的体现:父类的引用指向了自己的子类对象,父类的引用也可以接收自己的子类对象
  •   多态的前提:必须是类与类之间有关系,继承或实现,且必须存在覆盖
  •   多态的好处:提高程序的扩展性
  •   多态的弊端:提高了了扩展性,但只能使用父类的引用访问父类中的成员。
  •   多态的应用:
  •   多态成员函数(非静态)的特点:在编译期:参阅引用型变量所属的类中是否有调用的方法,如果有编译通过,如果没有编译失败;在运行期:参阅对象所属的类中是否   有调用的方法。成员函数在多态调用时,编译看左边,运行看右边。
  •   多态成员变量的特点:多态情况下无论编译和运行,都参考左边(引用型变量所属的类)
  •   多态中,静态成员函数的特点:无论编译和运行都参考左边

父类的引用指向了自己的子类对象时,该引用可以被提升,也可以被强转

  多态自始至终都是子类对象在做着变化

 Animal a = new Cat()//类型提示,向上转型

   Cat c =(Cat) a; //强制将父类的引用,转成子类类型,向下转型

/* Animal a = new Animal();

    Cat c = (Cat)a; */  不可将父类对象转成子类类型。