码迷,mamicode.com
首页 > 其他好文 > 详细

多态和接口

时间:2015-04-19 14:27:35      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:

     简单说,多态就是相同行为,不同实现。多态最关键的两个好处是:多态参数,异构集合。分为动态和静态多态。静态多态通过方法重载实现,动态多态则是通过方法重写实现。

      实现多态的步骤:

      1、编写父类,子类;

      2、在子类中重写父类方法;

      3、用父类的数据类型引用子类对象;

      4、调用时,自动实现该调用的方法。

     多态:

     1、使用父类类型引用指向子类的对象

     2、该引用只能调用父类中定义的方法,不能调用子类中独有的方法

     3、如果子类中重写了父类中的一个方法,那么在调用这个方法时,将会调用子类中的这个方法

     4、在多态中,子类可以调用父类的所有方法

     抽象(abstract) :抽象方法和抽象类。抽象方法没有方法主体,一个不包含抽象方法的类也必须是抽象类,且抽象方法必须在抽象类的所有子类中被重写(除非子类也是抽象类)

<关键字instanceof用于判断前者是否是后者的实例>

    接口interface(接口可多继承):在接口中所有方法都是抽象方法,所有方法都不提供给具体的实现,不能被实例化。

   eg:publc void interface Inter{

              void show(String str);

}

interface Inter2{

              void show;

}

interface Inter3 extends Inter,Inter2{}

<一个类可以实现多个接口,接口之间用逗号隔开>

      接口与类的相同之处:

      1、接口可以有任何数量的方法

      2、接口保存有“.java”为后缀的文件,接口名需要和文件名匹配

      3、接口编译后是以“.class”的字节码文件

      4、在包中的接口,字节码文件放置在和包名称相匹配的一个目录结构中

      不同之处:

     1、接口不能被实例化

     2、接口不包含任何构造器

     3、接口中的所有方法都是抽象的

     4、接口中不能包含实例成员变量

     5、接口不能被一个类继承,只能被一个类实现

      接口声明:

  pulic interface  接口名{

   //任意数量的final,static 成员变量

  //任何数量的抽象方法声明

}

    接口性质:

1、接口默认是抽象的(在声明接口时,不需要使用abstract)

2、接口中的每一个方法一是默认也是抽象的(也不使用abstract)

3、接口中的方法默认访问级别是public(public可省略)

     接口的实现(implements)

eg:public class 类名 extends 父类名 iplements 接口名

类实现接口时有两个选择:

1、实现接口中定义的所有方法

2、声明自己为抽象类

标记接口:一个没有任何方法的接口

接口与抽象类的不同之处:

1、接口中只能包含抽象方法,而抽象类可以包含普通方法

2、接口中不能定义静态方法,而抽象类可以

3、接口中只能定义静态常量属性,不能定义普通属性;而抽象类两者都可以

4、接口不包含构造器,而抽象类可以,抽象类的构造器用于完成抽象类的初始化

5、接口中不包含初始化块,抽象类 包含

 相同之处:

1、二者都不能被实例化,都位于继承数的顶端,用于被其它类实现或继承

2、二者都可以包含抽象方法,实现接口或者继承抽象类的子类都必须实现这些抽象方法

 

   

 

多态和接口

标签:

原文地址:http://www.cnblogs.com/h1234566789/p/4439028.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!