标签:
简单说,多态就是相同行为,不同实现。多态最关键的两个好处是:多态参数,异构集合。分为动态和静态多态。静态多态通过方法重载实现,动态多态则是通过方法重写实现。
实现多态的步骤:
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