黑马程序员_java学习笔记09

来源:互联网 发布:淘宝评论被判定为广告 编辑:程序博客网 时间:2024/06/03 02:02

  ------- android培训、java培训、期待与您交流! ----------


Day09 接口 多态 instanceof


一、接口

1概述

接口是特殊的抽象类,所有的属性都是公开静态常量(全局常量),所有的方法都是公开抽象方法而且没有构造方法

2(思想)特点

**接口是对外暴露的规则。

**接口是程序的功能扩展。

**接口的出现降低耦合性。

**接口可以用来多实现。

类与接口之间是实现关系,而且类可以继承一个类的同时实现多个接口。接口与接口之间可以有继承关系。

3接口的使用

类实现接口的时候,要么全部实现接口中的方法,要么类本身定义为抽象类。接口不能被实例化,所有成员有固定修饰符。

注意:

*如果接口默认的方法是publicabstract,可以省略不写,但是类在实现接口时,不可省public

*如果接口的返回值不是void,那么类实现该接口时,方法体中必须有return语句;

*如果接口的返回值是void,大括号内可以没有语句。

*如果父类实现了某个接口,子类也自然实现了该接口。

4接口和抽象类的区别--------都是不断向上抽取出来的

A:抽象类只能单继承,接口可以多实现。

B:抽象类中可以由非抽象方法。抽象类中可以定义变量和常量。接口中的方法都是抽象的。接口中只能有静态常量。因为接口中的方法都有默认修饰符:public abstract;接口中的成员变量都有默认修饰符:public static final

C:抽象类中定义的是一个体系的共性功能。接口中通常定义的对象中的扩展功能。

D:接口的出现避免了单继承的局限性。

E:抽象类被继承表示的是:is a 的关系。叫做:xxyy的一种。 接口被实现表示的是:like a 的关系。叫做:xxyy一种。

5举例

学会分析什么时候使用抽象类,什么时候使用接口。

他们代表两种不同的设计思想。

二、多态

1概述

事物的多种形态。它分为静态多态(重载)和动态多态(对象的多态)

2特点

体现:多态用在方法的参数上m(A a)可以用A的任何一个子类对象作为参数。

  多态用在方法的返回值上A m() m方法返回的可能是A的子类对象。

父类引用或者接口引用执行子类的对象。

前提: A:类与类(接口)之间有继承(实现)关系。

B:必须有重写。

C:父类引用指向子类对象。

多态的成员特点:

A:成员变量

编译看左边,运行也看左边。

编译--参考的是引用类型变量所属的类中是否有调用的成员变量,如果有,编译通过, 如果没有,编译失败。

运行--调用的也是引用类型变量所属类中的成员变量。

B:成员方法-------依赖于对象

编译看左边,运行看右边。

编译--参考的是引用类型变量所属的类中是否有调用的方法,如果有,编译通过, 如果没有,编译失败。

运行--调用的是对象所属类中是否有调用的方法,如果有,运行子类自己的方法;如果没有就调用父类的方法。

函数有一个覆盖的特性。

C:静态方法------不依赖于对象

编译看左边,运行也看左边。

编译--参考的是引用类型变量所属的类中是否有该方法,如果有,编译通过,如果没有,编译失败。

运行--调用的也是引用类型变量所属类中的方法。

3好处 

提高了代码扩展性,便于后期可维护性。把不同的子类对象都看成是父类的对象,屏蔽子类差异,使得程序更加通用。

4弊端

只能使用子类中和父类中同名的方法。对于子类特有的方法使用不了。

5思想

多态可以指挥同种类型一批对象做事情。使我们复杂的问题简单化了。

带士兵打仗,下课吃饭。

6转型向上转型,向下转型

对程序进行扩展,或者限定对对象的方法操作时,使用向上转型。当要使用子类的特有方法时,需要向下转型(要做健壮性的判断)

向上转型和向下转型需要注意的问题。进去是什么,出来还得是什么。

Animal a = new  Dog();  向上转型  -------Dog提升为Animal

a.eat();  向下转型 --------调用的是Dog的方法。

ClassCastException:在进行子类特有方法使用时,要进行向下转型,转型前一定要做判断,否则容易发生次异常。增强程序的健壮性!

三、instanceof关键字

它是一个比较运算符,返回值类型为boolean

对引用作强制类型转换,可以用instanceof判断是否兼容,从而避免类型转换异常。

if( a instanceof Dog){

Dog b = (Dog) a;

a.shout();

}


  ------- android培训、java培训、期待与您交流! ----------

原创粉丝点击