3.接口 如果一个抽象类中的方法全是抽象方法,那么你就可以将其声明成一个接口。接口中的所有方法都是抽象方法,它是抽象方法和常量值定义的集合。从本质上讲,接口是一种特殊的抽象类,这种类中值包含常量和方法的定义,而没有变量和方法的实现。 接口中的所有属性 默认的修饰符是 publicstatic final 接口中的所有方法 默认的修饰符是 public abstract 接口中无论是属性还是方法,它默认的权限都是public 接口与类之间有什么关系 1.抽象类是用来被继承的,可以将抽象类中的抽象方法重写 2.接口中的方法都是抽象的,也就是说,需要将接口中的方法都进行重写。 类与接口之间存在 实现的关系. 一个类要想实现接口用到另个一个关键字 implements class 类名 implements 接口名{ } 当一个类实现了接口,那么必须将接口中的所有方法进行重写。 多实现 java中通过接口来完成多继承 为什么可以有多实现 接口中的方法都是抽象方法,也就是说只定义了方法的声明,而没有具体的实现,那这时候我们就可以进行多实现。不会引起混淆。 一个类可以去实现多个接口 格式 class 实现类implements 接口1,接口2,... 接口与父类它们都完成什么功能 父类 定义的是共公的行为 接口 扩展的行为 接口与抽象类的区别 1.类与抽象类之间存在的是继承关系,并且是一种单继承 类与接口之间存在的是实现关系,并且可以多实现 2.抽象类是继承 is a 也就是说父类中定义的是子类中公共的行为 接口是实现 like a 也就是接口中定义的是子类的扩展功能 3.抽象类中有抽象方法,也可以存在实例方法,可以让子类直接使用 接口中都是抽象的方法,要想使用,只能去做个实现类去实现接口,使用实现类中的方法。 接口与抽象类相同点 1.接口与抽象类都是将子类中共性的内容将上抽取得到的。 2.抽象类不可以实例化,接口也不可以实例化 简单说,接口与抽象类都不能new 1.类与类之间的关系 继承关系 extends 子类继承父类中的所有成员。 2.类与接口的关系 实现关系 implements 实现类继承了接口中的属性,重写了接口中的所有方法. 3.接口与接口的关系 继承 extends 更正确的说 接口的扩展 子接口继承了父接口中的所有成员 如果实现类是一个抽象类,那么可以不用重写接口中的方法。 多态 某一类事物的多种存在形态。同一种行为表现出不同的状态 多态可以存在的前提: 子类与父类 继承 父类 引用 = new 子类 父类引用指向子类对象 接口与实现类 实现 接口 引用= new 实现类 接口回调 需要进行重写 存在的弊端 存在问题:在子类或实现类中独有的行为不可能通过父类引用或者接口的引用去调用。 多态的细节 1.实例方法 编译时:查看父类(父接口)中是否存在调用的方法 运行时: 调用的是子类(实现类)中重写的方法 2.实例属性 编译时:查看父类(接口)中是否存在这样的属性 运行时: 得到的是父类(接口)中的实例属性. 3.类方法 编译时:查看父类(父接口)中是否存在调用的方法 运行时: 调用的是父类中的类方法 |