今天给大家分享的是SAP OO面向对象的抽象类/方法和接口这两个概念. 抽象类 1.和java中概念是一样的,在一个类中有一个或多个抽象方法的类叫做抽象类. 2.抽象类不可以被实例化对象,只能通过子类继承抽象类的方式,去实例化子类. 3.抽象类中的方法是没有具体是实现,只有方法的声明. class <class_name> definition abstract . 抽象方法 仅包含方法的声明定义,没有方法体,需要子类来实现具体的方法功能. methods <meth_name> abstract .
接口 1.接口的定义和抽象类的定义类似,也是只有方法的声明定义,没有方法的具体实现,需要继承才能实现接口中的具体方法功能. 2.不需要方法的实现,不能直接实例化 3.接口中的成员全是抽象的对象 4.接口成员一般都是公有的 5.接口不能有构造方法 6.静态成员访问时,通过接口引用访问 intf=>const 7.其他成员可以通过实现该接口的类的本身或者类引用进行方法 class=>intf~attr 或call method class=>intf~meth. 8.也可以通过别名的方式进行调用. aliases alias for intf~com1
接下来我们就看看代码的实现
*接口
interface inter .
methods write_inter.
endinterface.
*1.定义抽象类/方法
class lcl_abstract definition abstract. "抽象
*class lcl_abstract definition . "接口
public section .
*抽象
methods write_abstract .
methods write_abstract_02 abstract .
*接口
interfaces inter
aliases write_interface for inter~write_inter. "别名
endclass .
*2.实例化类
class lcl_abstract implementation .
method write_abstract.
write: / '抽象中的实例方法'
endmethod.
*接口
*method inter~write_inter .
method write_interface. "使用别名
write: / '接口中的方法调用'.
endmethod.
endclass .
*2.1继承抽象类
class lcl_sub_02 definition inheriting from lcl_abstract.
public section .
methods write_abstract_02.
endclass.
*2.2实例化抽象类
class lcl_sub_02 implementation.
method write_abstract.
write: / '抽象类中的抽象方法'.
endmethod.
endclass.
*3.声明实例化类对象
data lcl_object_inter type ref to lcl_compt. "接口
data lcl_object_abs type ref to lcl_sub_02. "抽象
start-of-selection.
*4.创建对象
create object lcl_object_abs. "抽象
create object lcl_object_inter. "接口
*5.(抽象)调用对象
call method lcl_object->write_abstract .
call method lcl_object->write_abstract_02.
*5.1(接口)调用对象
*call method lcl_object_inter->inter~write_inter. "正常调用
call method lcl_object_initer->write_interface. "别名调用
注意 当抽象类中既有实例方法 又有抽象方法 时,此时实例化的类 不可以声明实例化对象,只能通过继承抽象类 ,再实例化类,再进行实例化对象声明 创建和调用.
注意 接口和抽象他们的实例化要做个不计较,不然容易弄混. 总结: 接口 1.定义接口 2.在定义类中声明接口 3.实例化类并实例化接口中的方法 4.声明实例化对象 5.创建实例化对象 6.调用接口 抽象 1.定义抽象类声明 2.实例化类(可有可无,主要看定类中是否有实例方法) 3.继承并声明抽象类 4.实例化子类. 5.声明实例话对象 6.创建实例化对象 7.调用抽象方法
|