陈宇博客

Softworks对日软件人才培训高级讲师专栏

陈宇ID:frank_softworks
22362次访问,排名5170好友1人,关注者10
,主要从事,系统设计,软件开发和新人培训 ,5年以上软件开发经验,10个以上C/S和B/S软件系统开发经验,
熟练使用VB.net,C++,C#,ASP.net,JSP,JS,VBS,Java2,
熟悉J2EE企业级开发及架构,
熟练使用SQL Server,Oracle,DB2数据库,
受过专业软件管理培训,深刻了解企业级软件管理及实施
frank_softworks的文章
原创 7 篇
翻译 0 篇
转载 0 篇
评论 49 篇
最近评论
shijie1983:测厚仪 
氧化铁
测厚仪
shijie1983:杭州特价机票
杭州打折机票
杭州机票
杭州化妆培训
shijie1983:雅虎管理咨询
网络营销
特价机票
是不是也可以理解为:

用TigerTank类的构造器去初始化Tank的一个对象呢?
lishengwei:不太懂呵呵呵
文章分类
    收藏
      相册
      存档
      软件项目交易
      订阅我的博客
      XML聚合  FeedSky
      订阅到鲜果
      订阅到Google
      订阅到抓虾
      订阅到BlogLines
      订阅到Yahoo
      订阅到GouGou
      订阅到飞鸽
      订阅到Rojo
      订阅到newsgator
      订阅到netvibes

      原创 面向对象的授课感想收藏

      新一篇: 集合框架的授课感想 | 旧一篇: 6.26南汇校园行

       
      0707班是我来到Softworks所带的第十一个班级,就以前的带班经验而言,我认为一个软件开发初学者在Java编程语言中最难以学习的就是面向对象的概念,尤其以面向父类,面向接口编程尤为困难。作为学术研究人员,我翻阅了很多Java书籍,试图来找寻解决上述问题的方法。但是目前市场上的书籍对于刚才这些问题的阐述都比较肤浅,很难讲述给学员,因此我自己对面向父类,面向接口编程的概念作出了总结,并在多个班级中进行了实践,结果还是相当不错的,作为学习,我将自己总结的原则写于博客中,希望给更多的软件学习者提供帮助。
      在面向对象的学习过程中,我为学员提出的总结性原则是:“左声明右实现”,那么如何来理解这句话呢?我们来看一个我上课一直沿用的案例:

      package cn.softworks.oojava.demo;
       
      /***坦克类,它是所有坦克的父类*/
      class Tank {
         
          publicvoid printTank()
          {
              System.out.println("This is Tank");
          }
      }
      /***M1坦克类,它继承了坦克父类*/
      class M1Tank extends Tank
      {  
          //该方法重写了父类中的printTank
          publicvoid printTank()
          {
              System.out.println("This is M1Tank");
          }
          //M1Tank自己的方法
          publicvoid showName()
          {
              System.out.println("M1Tank");
          }
      }
      /***虎式坦克类,它继承了坦克父类*/
      class TigerTank extends Tank
      {  
          //该方法重写了父类中的printTank
          publicvoid printTank()
          {
              System.out.println("This is TigerTank");
          }
      }
      /***坦克类的测试类*/
      publicclass ClassMain {
         
          publicstaticvoid main(String args[]) {
             
              Tank tank = new TigerTank();
              //最终的输出结果为:This is TigerTank
              tank.printTank();
          }
      }

      以上代码的最终运行结果是:This is TigerTank
      我们再来看看“左声明右实现”这句话,作为以下语句而言:

      Tank  tank = new TigerTank();

      等号的左侧是Tank tank,而等号的右侧是 new TigerTank(),
      根据“左声明右实现”的原则可以肯定左侧的Tank tank代码只是用来告诉编译器,在Tank类中拥有printTank方法,它只是对printTank方法进行了一次声明并没有真正实现(开辟空间),而真正的实现是在右侧的,new TigerTank()明确告诉了编译器,左侧的printTank方法由TigerTank来实现,因此最终使用的是TigerTank类中的printTank方法而并非是Tank类中的printTank方法,打印结果也就理所当然的为This is TigerTank了。
      如果我们将代码写成以下形式:

      Tank  tank = new M1Tank();

      最终的运行结果为:This is M1Tank
      根据“左声明右实现”的原则可以理解为Tank tank中所声明的printTank方法应该有M1Tank()来实现,因此最终使用的是M1Tank中的printTank方法。
      请同学们注意:以上这个原则可以在任何地方使用,包括在接口和抽象类中,软件初学者可以以这个原则来理解面向父类的编程方法。
      请同学用“左声明右实现”原则来考虑以下代码的运行结果:

      Tank  tank = new M1Tank();
      tank.showName();

      答案为:编译出错,错误提示:没有showName这个方法,请同学们考虑一下这是为什么呢 :-) ?

        

      上海Softworks软件人才培训中心
      电话:021-53086530    53086531
      地址:上海市北京东路668号科技京城东楼9楼E座
      网址:
      www.softworks.cn

      发表于 @ 2007年07月11日 10:53:00|评论(loading...)|编辑

      新一篇: 集合框架的授课感想 | 旧一篇: 6.26南汇校园行

      评论

      #lzjxk 发表于2007-09-28 21:10:47  IP: 218.104.96.*
      最初看一本Java教材,还没到一半就看不下去了,就是因为理解不了OO的思想。后来实在没办法,就随便找了本GUI的书看了,但没想到却让我有了OO的思想。所以如果是我的话,一定是会建议朋友们接触下Java的GUI的,因为它里面每一个元素都和一个对象对应着,很容易就会理解OO的。
      #lzjxk 发表于2007-09-28 21:15:43  IP: 218.104.96.*
      最初看一本Java教材,还没到一半就看不下去了,就是因为理解不了OO的思想。后来实在没办法,就随便找了本GUI的书看了,但没想到却让我有了OO的思想。所以如果是我的话,一定是会建议朋友们接触下Java的GUI的,因为它里面每一个元素都和一个对象对应着,很容易就会理解OO的。
      #lzjxk 发表于2007-09-28 21:33:02  IP: 218.104.96.*
      最初看一本Java教材,还没到一半就看不下去了,就是因为理解不了OO的思想。后来实在没办法,就随便

      找了本GUI的书看了,但没想到却让我有了OO的思想。所以如果是我的话,一定是会建议朋友们接触下

      Java的GUI的,因为它里面每一个元素都和一个对象对应着,很容易就会理解OO的。
      #lzjxk 发表于2007-09-28 21:34:09  IP: 218.104.96.*
      晕,一开始回复,都发不出去,后来没想到一下子就出了这么多,郁闷…
      #high_java 发表于2007-10-16 22:09:41  IP: 222.210.20.*
      左声明,右实现
      好玩
      #ohuan 发表于2007-10-23 09:41:26  IP: 221.4.149.*
      左声明,右实现
      嗯!精典!
      #tjy1985 发表于2007-10-24 12:29:24  IP: 60.7.25.*
      不错啊
      谢谢老师
      #hfgayy 发表于2008-07-22 15:44:36  IP: 219.142.86.*
      是不是也可以理解为:

      用TigerTank类的构造器去初始化Tank的一个对象呢?
      发表评论  


      当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
      Csdn Blog version 3.1a
      Copyright © 小宇