用了几年c语言,很多习惯都离不开c语言的思想.
学java对类有几个好想不懂的问题.
变量我第一时间就想起 作用域,存放在内存那里等等问题.
感觉java和c语言差别太大了.毕竟作为高级语言和中级语言的一个鸿沟吧..看android代码很多变量都想不懂他的作用域.
举例:public class HandlerTest extends Activity
{
    /*
    ...
    ..
    .
    */
    public void onCreate(Bundle savedInstanceState)
    {
        /*
        ...
        ..
        .
        */
        Handler myHandler = new Handler(){
            /*
            ...
            ..  handleMessage
            .
            */
        };
        Thread(new myThread ).start();
    }
    
    public class myThread implements Runnable{
    
public void run() {
    myHandler.sendMessage()
            //用myHandler发送数据
}

    }
}1, 我新创建一个线程,这个线程里面还可以访问myThread为什么?
2, 不是已经分别是连个线程了么?数据还共享?
3, 两个类之间数据是什么关系?看过<java语言程序设计基础篇>.但是觉得里面没说到数据作用域的问题.
呵呵,虚心请教....

解决方案 »

  1.   

    这个是内部类的问题建议楼主先学一周java或者三四天java,了解下javase的常用api。
      

  2.   

    貌似 android开的那个线程好像是个假线程!
      

  3.   

    建议楼主先找个java基础教程学一下内部类,
    然后找Android教程学一下线程基础
    用一周时间就搞定!!
      

  4.   

    你不是对Java不了解,你是对线程不了解。另外内部类有一个隐含的外部类引用,可以通过那个引用直接访问外部类对象的成员(相应的内部类实例化的时候也必须提供外部类对象)
      

  5.   

    我也建议楼主先看java se 2星期到一个月,把基本知识特别是面向对象的思想感受一下,然后再看android
      

  6.   

    感谢热心网友的回复...
    就是内部内的问题,我现在自个去查一下这方面的东东.java已经看了快3个星期了,大概都有点概念.就是android编程的时候
    发现这问题,想提出来问问而已.
    毕竟知道对这个问题有不理解,但是不知道应该去找那方面的知识点.
      

  7.   


    感觉不太可能,毕竟习惯了面向过程编程.不是一下子就可以转变到面向对象编程...
    其实基本语法感觉差不多(以前接触过c++)只不过有些细节问题不太清楚.
    毕竟以前没专门学过java
      

  8.   

    lz你比那些没写过c的只写java的有优势多了。用面向过程的思想才是对的,目前计算机结构就是冯诺依曼式,再怎么面向对象最终编译出来还不是过程?对于你的问题:
    1, 我新创建一个线程,这个线程里面还可以访问myThread为什么?
    线程之间为什么不能互相访问?你要区别线程和进程!线程都在同一地址空间中,编译后变量的相对地址彼此都是已知的。它不像进程与进程间,基地址不明确,所以就不能互相访问。
    2, 不是已经分别是连个线程了么?数据还共享?
    同上,数据肯定能共享啦
    3, 两个类之间数据是什么关系?
    就是struct,连续的内存块我觉得lz的问题应该是对内部类不理解,其实你不明白的这句:
    myHandler.sendMessage()
    完整书写应该是:
    HandlerTest.this.myHandler.sendMessage()
    注意,是通过this指针,所以是实例方法而不是类方法,所以是非静态的
    至于如何确定this指针呢?因为是内部类,所以类生成实例的之后,通过父类实例再生成内部类的实例的时候,内部类就能获取父类的this指针
      

  9.   

    没看对书,请看《thinking in java》
      

  10.   


    是的!已经看了...thinking in java 有一章讲内部类,十分详细!!!