软件构造课程心得(5)
最近做了lab3,对接口和继承又有了种种新的认知,在这里想和大家分享。
首先是接口可以接收该接口的各种子类,由此来完成多个不同类的统一接收,如图
这是一个State接口
而下图(以createdstate为例)是这个state接口的各种子类,createdstate,givedstate,blockedstate,canceledstate,beginedstate,finishedstate;
而当我想用一个变量来表示这六个不同的类的时候,我们就可以直接将这个变量定义为接口类
也就是state类,在将这个变量赋值之后,接口类变量中原本空的方法就会被赋值类中的同名方法所取代,也就是说
只需要定义一个变量state k,然后如下操作
就可以将k改变未givestate类,非常方便。
而之后我又在想是否变量也和方法一样,可以从子类赋予父类中的同名变量。上面的代码很简单,就是abc继承find,在abc和find中都有变量a,k,然后我在abc和find中将a,k
赋予不同的值,然后用abc类变量来给find类变量赋值,然后看find中的a,k是否发生改变。
下图是运行结果
我们发现find中的变量并没有被改变。然而当我们把abc类稍稍改变一下
结果如下
我们发现竟然成功改变
这是因为当我们将abc中的a,k删除时,我们再次改变的a,k就是abc从父类find中获取的,所以可以直接赋值到find中。