51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 8258|回复: 10
打印 上一主题 下一主题

[连载] 精通RFT-04: Java中的面向对象: 继承

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-3-23 23:56:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在了解继承的具体实现之前,请首先确保你已经对“理解面向对象”节中的基本概念有所了解。继承中有4个子概念首先需要知道的:父类,子类,重写,扩展。先简单介绍一下这几个概念:

1) 父类:用来被子类继承的称作父类,比如在此我们把“门”定义成一个父类
2) 子类:继承父类的类称作子类,在引我们可以把“防盗门”定义成一个子类
3) 重写:父类“门”有一个方法叫做openDoor(),而由于“防盗门”打开的方式不一样,我们需要在子类中重新实现openDoor()这个方法,此时子类中的openDoor()便重写了父类中的openDoor()。
4) 扩展:父类“门”只有openDoor()和closeDoor()两个方法,而对于“防盗门”这个子类,还存在一个方法叫做“按门铃”,此时子类“防盗门”便可以新增一个方法pressBell(),这就是“扩展”。

与上节一样,我们仍然使用Door这个类来作为父类,里面不做任何修改,代码如下:
package com.agilejoy.rft;        // 包, 表明Door.java位于目录com/agilejoy/rft下

public class Door {
       
        private int height;                // 定义属性height为私有变量类型, 仅在Door类中可调用
        public int width;                // 定义属性width为公用变量类型, 可在Door的实例中调用
       
        // 定义方法openDoor
        public void openDoor() {
                System.out.println("Door is open now ...");
        }
       
        // 定义方法closeDoor
        public void closeDoor() {
                System.out.println("Door is close now ...");
        }
       
        // 经典的setter和getter方法
        public void setHeight(int height) {
                // 本处的this.height为类的私有变量height, 等号后的height为参数height的值
                this.height = height;
        }
       
        public int getHeight() {
                // getter方法, 用于返回值
                return this.height;
        }
}

接着我们创建一个子类叫SafeDoor,里面什么都不做,只做一下继承,代码如下(注意关键字extends)

package com.agilejoy.rft;

public class SafeDoor extends Door{
        // 此类不做任何实现,只继承自Door
}

在这种情况下,实例化SafeDoor这个类,此类将会拥有所有Door类中的作用域为public和protected的方法和属性(特别注意一下private修饰的方法和属性将不能被继承),现在我们实例化SafeDoor并调用相应的方法:

package com.agilejoy.rft;

public class MyDoor {       
        public static void main(String[] args) {
                SafeDoor safeDoor = new SafeDoor();
                safeDoor.openDoor();
                safeDoor.closeDoor();
                safeDoor.setHeight(1000);
                System.out.println("Height is: " + safeDoor.getHeight());
               
                safeDoor.width = 500;
                System.out.println("Width is: " + safeDoor.width);        }
}

运行,输出结果为:
Door is open now ...
Door is close now ...
Height is: 1000
Width is: 500

我们可以看到,虽然SafeDoor类中什么也没有,但是所有Door类中的方法和属性均可用于SafeDoor这个类的实例,这便是继承的强大之外,这是面向对象中很强大的一个功能,通过这样的方式我们便可很容易地实现重用。

最后,我们为SafeDoor这个类添加一个新的方法扩展其功能,方法名为pressBell():

public void pressBell() {
        System.out.println("Door's bell is pressed ...");
}

这个新的方法便是一个扩展,这样SafeDoor不仅可以使用Door的方法,也可以扩展自己的方法和属性,使面向对象这种程序设计思想轻易实现重用性和扩展性。

(声明:本文版权归作者个人所有,如需转载,请注明出处,如有需要,请联系QQ: 15903523 (强子))
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2010-3-24 11:50:32 | 只看该作者
很好,补充基础知识。我现在想知道,怎样让RFT识别flex 2 自己定义的控件,这个让我很头疼。目前只能识别部分控件。
楼主能告诉我这些知识应该去找哪些相关资料?谢谢。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2010-3-24 12:49:58 | 只看该作者
终于出来了、千呼万唤始出来、等连载4很久了
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2010-3-25 21:48:02 | 只看该作者
原帖由 helen56 于 2010-3-24 11:50 发表
很好,补充基础知识。我现在想知道,怎样让RFT识别flex 2 自己定义的控件,这个让我很头疼。目前只能识别部分控件。
楼主能告诉我这些知识应该去找哪些相关资料?谢谢。


自定义控件要想让RFT识别很难,目前还没有哪款工具对自定义的控件能够完美支持,个人对此也很头痛。

不过楼主可以考虑绕过界面(如果不验证界面上的功能的话),基于后台协议使用JAVA的网络编程功能发送数据包到服务器,再检查服务器的返回值来判断功能是否正确。
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2010-3-27 01:59:25 | 只看该作者
请允许我继续花一周到两周的时间把基础知识如:JDBC,XML,INI,MAIL,正则表达式等介绍完,因为只有按照这个思路循序渐进,才能确保你在学习RFT的道路上没有阻碍。

很奇怪,有些人学习自动化,一开始就拿个Start Record的按钮开点,然后一路操作,最后回放,于是感觉自己知道自动化测试是怎么回事了,再后来,学习了检查点和参数化,感觉就更飘飘然了,到处去说自动化不就这么回事儿嘛!!

再过了一阵子,一个高手看见了,告诉他你的代码有点乱,你的结构有点杂,你的程序有点弱,你用这个工具有点浪费,高手泪流满面 .......  待续
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2010-4-4 14:59:25 | 只看该作者
thanks very much
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2010-4-17 16:56:23 | 只看该作者
原帖由 dennyqiang 于 2010-3-27 01:59 发表
请允许我继续花一周到两周的时间把基础知识如:JDBC,XML,INI,MAIL,正则表达式等介绍完,因为只有按照这个思路循序渐进,才能确保你在学习RFT的道路上没有阻碍。

很奇怪,有些人学习自动化,一开始就拿个Start ...


呵呵,我很支持你,就像赞同您第一篇中说的那样,光学会使用工具还不够,得把握原理。期待您的连载
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2010-7-9 17:54:09 | 只看该作者
问个比较肤浅的问题,
既然子类不是继承父类的私有属性,那为什么safeDoor.setHeight(1000);,还可以对这个属性height进行操作了,既然没有继承,子类就不应该有这个属性才对啊。
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2011-3-17 15:53:29 | 只看该作者
终于出来了、千呼万唤始出来、等连载4很久了
回复 支持 反对

使用道具 举报

  • TA的每日心情
    奋斗
    2014-12-2 11:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    10#
    发表于 2012-10-19 16:00:51 | 只看该作者
    学习了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2016-1-13 10:49
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    11#
    发表于 2014-3-7 17:14:24 | 只看该作者
    讲的挺不错,但希望有更具体的
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-5-2 19:24 , Processed in 0.071468 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表