首页 > 代码库 > 多态,抽象,接口

多态,抽象,接口

2017-08-04

多态

某一个事物,在不同时刻表现出来的不同状态

多态的前提:有继承关系,有方法重写,有父类引用指向子类对象

多态的体现:继承方面,接口方面,抽象类方面

多态的好处:提高了程序的维护性(由继承保证)

      提高了程序的扩展性(由多态保证)

成员访问的特点:成员方法的访问:编译看左边,运行看右边

        成员变量的访问:编译看左边,运行看左边

        静态方法的访问:编译看左边,运行看左边

多态的弊端:不能访问子类的特有功能

多态的转型:向上转型:从子到父 父类引用指向子类对象

      向下转型:从父到子 父类引用转化为子类对象

      向上转型时:当调用成员方法时会调用出子类的方法,如果子类没有被调用的方法,则再去从父类找

            当调用成员变量时会调出父类的变量

            当调用静态方法时 ,可以用父类或子类的类名去调用静态方法,也可以用创建出来的对象调用静态方法,是调用父类的

            子类特有的类是调不出来的

      向下转型时:可以调用父类特有的方法

            当调成员方法时,如果子类中没有这个方法则会调父类的,如果有的话,则调用子类的,

            调用成员变量,调用静态方法也是一样的

抽象类

抽象类和抽象方法必须用abstract关键字来修饰

格式:abstract class 类名 {}

   public abstract void  方法名();

抽象类不一定要有抽象方法,但抽象方法一定要写在抽象类中

抽象类不能实例化,但能按照多态的方式,由具体的子类实例化,这是多态的一种,抽象多态

抽象类的子类:要么是抽象类,要么重写抽象类中的所有抽象方法 ,如果抽象类也有它的抽象父类,抽象父类中的方法也会被实现

abstract 关键字与private , final ,static 关键字冲突

接口

用关键字 intreface 声明 : interface 接口名{}

类实现接口用implement:class 类名 implement 接口名{}

接口不能实例化,但能按照多态的方式,由具体的子类实例化,这是多态的一种,接口多态

单继承【类与类】;多继承【接口与接口,逗号隔开】;多实现【类和接口,逗号隔开】

接口的子类:要么是抽象类,要么重写接口中的所有抽象方法 ,如果接口也有它的接口父类,接口父类中的方法也会被实现

接口中的所有方法都是抽象方法,可以不加abstract关键字,默认的就是抽象的;成员变量都是静态常量,可以不加static final关键字,默认的就是静态常量

接口中的权限修饰符只能是public

如果接口1继承了接口2(接口和接口之间只能继承),则接口1的子类也要实现接口2中未实现的方法

如果类已经实现了接口2,接口1,则接口1不能再去继承接口1。

 

多态,抽象,接口