今天给大家分享的是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.调用抽象方法