精华内容
下载资源
问答
  • 我知道当内部类变量和和外部类变量同名时要用this修饰,但是我下面这段代码 /******内部类***********/ @SuppressWarnings("serial") public class ChessImage extends JPanel { public void init() ...
    我知道当内部类变量和和外部类变量同名时要用this修饰,但是我下面这段代码
    
    /******内部类***********/
    @SuppressWarnings("serial")
    public class ChessImage extends JPanel {

    public  void init() throws Exception{
    table=ImageIO.read(new File("image/board.jpg"));
    black=ImageIO.read(new File("image/black.gif"));
    white=ImageIO.read(new File("image/white.gif"));
    selected=ImageIO.read(new File("image/selected.gif"));
    chessboard.initBoard();
    this.setPreferredSize(new Dimension(TABLE_WIDTH,TABLE_HEIGHT));
    this.addMouseListener(new MouseAdapter()
    {   @Override
    public void mouseClicked(MouseEvent e)
    {

    posX=(int)((e.getX()-X_OFFSET)/RATE);
    posY=(int)((e.getY()-Y_OFFSET)/RATE);
    //如果if条件不通过,直接跳出mouseClicked()方法
    if( GobangGame.this.isValid(posX,posY) )
    {
    chessboard.getBoard()[posX][posY]=" ";
    chessimage.repaint();

        chessman = Chessman.BLACK.getChessman();
    if ( isWon(posX, posY, chessman) ) {
    isOver = true; 
    chessman = Chessman.BLACK.getChessman();
    ...............................................下面代码略过


    为什么.isValid方法eclipse要求我前面要加GobangGame.this限定(GobangGame是外部类类名),然而同是外部类方法,下面的isWon方法却不用,为什么?????



    问题已经解决了,原因其实很简单,isValid方法其实也是java.awt.Component这个类的方法,所以要加上限定

    展开全文
  • 内部类如何访问外部类同名变量?

    千次阅读 2019-04-15 22:00:46
    内部类使用外部类的成员变量格式是: 外部类名称.this.外部类成员变量名 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190415214827688.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5...

    如果内部类与外部类出现了重名现象那么
    ①内部类使用内部类的成员变量格式是: this.内部类成员变量名
    ②内部类使用外部类的成员变量格式是: 外部类名称.this.外部类成员变量名
    在这里插入图片描述
    创建内部类对象的方法公式:
    外部类名称.内部类名称 对象名 = new 外部类名称().new 内部类名称();
    在这里插入图片描述

    展开全文
  • 内部类调用外部类变量

    千次阅读 2019-09-12 15:07:08
    要求:使用已知的变量,在控制台输出30,20,10。 class Outer { public int num = 10; class Inner { public int num = 20; public void show() { int num = 30; Sy...

    要求:使用已知的变量,在控制台输出30,20,10。

    class Outer {
    	public int num = 10;
    	class Inner {
    		public int num = 20;
    		public void show() {
    			int num = 30;
    			System.out.println(num);
    			System.out.println(this.num);
    			System.out.println(Outer.this.num);
    		}
    	}
    }
    class InnerClassTest {
    	public static void main(String[] args) {
    		Outer.Inner oi = new Outer().new Inner();
    		oi.show();
    	}	
    }



    转载于:https://my.oschina.net/u/580135/blog/612211

    展开全文
  • 这里所说的“匿名内部类”主要是指在其外部类的成员方法内定义,同时完成实例化的,若其访问该成员方法中的局部变量,局部变量必须要被final修饰。 原因是编译程序实现上的困难:内部类对象的生命周期会超过局部...

    重点!重点!重!点

    匿名内部类不能访问外部类方法中的局部变量,除非变量被声明为final类型

    1. 这里所说的“匿名内部类”主要是指在其外部类的成员方法内定义,同时完成实例化的类,若其访问该成员方法中的局部变量,局部变量必须要被final修饰。
    2. 原因是编译程序实现上的困难:内部类对象的生命周期会超过局部变量的生命周期。局部变量的生命周期:当该方法被调用时,该方法中的局部变量在栈中被创建,当方法调用结束时,退栈,这些局部变量全部死亡。而内部类对象生命周期与其它类一样:自创建一个匿名内部类对象,系统为该对象分配内存,直到没有引用变量指向分配给该对象的内存,它才会死亡(被JVM垃圾回收)。所以完全可能出现的一种情况是:成员方法已调用结束,局部变量已死亡,但匿名内部类的对象仍然活着。
    3. 如果匿名内部类的对象访问了同一个方法中的局部变量,就要求只要匿名内部类对象还活着,那么栈中的那些它要所访问的局部变量就不能“死亡”。
    4. 解决方法:匿名内部类对象可以访问同一个方法中被定义为final类型的局部变量。定义为final后,编译程序的实现方法:对于匿名内部类对象要访问的所有final类型局部变量,都拷贝成为该对象中的一个数据成员。这样,即使栈中局部变量已死亡,但被定义为final类型的局部变量的值永远不变,因而匿名内部类对象在局部变量死亡后,照样可以访问final类型的局部变量,因为它自己拷贝了一份,且与原局部变量的值始终一致。
    展开全文
  • Test.java(测试):package cn.xxx.demo; public class Test { public static void main(String[] args) { ... // 内部类对象创建格式。 in.inner(); // 调用内部类对象方法。 } } Outer.ja...
  • 从学习java的时候知道匿名内部类能访问外部类变量,那为何呢。先从一个最简答的例子开始: public class InnerTest { private int num = 0; public static void main(String[] args) { InnerTest innerTest...
  • 在书上看到这样一段话:如果局部内部类要访问外部类的局部变量,则此变量必须是final修饰的,否则不能访问。说是为了提高局部变量的生命周期,可不可以说的通俗一些?
  • 因为内部类和外部类的局部变量生命周期不一样,外部类方法执行完该局部变量可能会被释放掉,但该方法中的内部类可能还在执行(如线程),还要使用该变量,所以外部类变量设置为final的,变成常量,使用的时候内部类...
  • 1,Java中的匿名内部类是如何实现的? 先定义一个接口: 1 2 3 public interface MyInterface { void doSomething(); } 然后创建这个接口的匿名子类: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...
  • 内部类的同名变量访问_解决方法: 格式:外部类名称.this.外部类成员变量名 如何创建内部类对象 格式:外部类名称.内部类名称 对象名 = new 外部类名称().new 内部类名称(); 实例如下: 定义一个包含内部类的...
  • 为什么内部类引用外部类的局部变量时,此变量要用final修饰 代码 public void test() { final int i = 3; runOnUiThread(new Runnable() { @Override public void run() { mTvShow.s
  • 匿名内部类及如何访问外部变量

    千次阅读 2018-08-17 19:27:00
    4、匿名内部类如何访问在其外面定义的变量:匿名内部类不能访问外部类方法中的局部变量,除非该变量被声明为final类型 这里所说的“匿名内部类”主要是指在其外部类的成员方法内定义的同时完...
  • 三、使用的形参为何要为final 参考文件:...也就是说:当所在的方法的形参需要被内部类里面使用时,该形参必须为final。 为什么必须要为final呢? 首先我们知道在内部类编译成...
  • import java.awt.*; import javax.swing.*; import javax.swing.border.*; import java.awt.event.*; import java.lang.Math;...public class GuessWindow extends JFrame //implements ActionListener ...}
  • package Test;import java.util.Date;public class MyTread { /** * @author peter * @desc 启动多线程 推送消息到接口地址,匿名内部类调用外部方法属性 * @date 2017.09.13 */ public void test() { //
  • 直接访问 对局部变量有要求具体如下: (1)内部类里面使用外部的局部变量时,其实就是内部类的对象在使用它,内部类对象生命周期中都...说白了,内部类会自动拷贝外部变量 的引用,为了避免: 外部方法...
  • Java匿名内部类访问外部类的局部变量,那么这个局部变量需要用final修饰吗? 为什么我的测试没有用final却可以?
  • 1,Java中的匿名内部类是如何实现的? 先定义一个接口: 1 2 3 public interface MyInterface { void doSomething(); } 然后创建这个接口的匿名子类: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...
  • 内部类获取外部类的成员变量

    千次阅读 2017-10-07 15:06:24
    内部类里面使用外部类的成员变量,不能使用super关键字,因为这个是继承才用的关键字 可以使用 外部类类名.this.变量名 的形式获取 示例: class Outer { public int num = 1; class Inner { public int ...
  • 关于内部类的问题: 局部内部类访问外部类的局部变量问题 编程时,在线程中使用局部变量时候经常编译器会提示:局部变量必须声明为final [java] view plain copy package test; public class ThreadTest { ...
  • 【C语言】C语言外部变量和内部变量

    千次阅读 2016-02-13 16:51:15
    目录: 【外部变量】 ...定义的变量能被本文件其它文件访问的变量,称为外部变量。 注: * 默认情况下,所有全局变量都是外部变量。 * 不同文件中的同名外部变量都代表同一个变量。 ·
  • android 匿名内部类使用外部类变量

    千次阅读 2016-01-02 13:12:15
    如果定义一个匿名内部类,并且希望它使用一个在其外部定的对象,那么编译器会要求其参数引用是final的。  1.匿名内部类肯定是局部内部类(在一个方法里面定义的内部类),因为在java中,语句必须写在方法里,而匿名...
  • class test{ public $url; function showUrl(){ global $url; $this->url = $url; echo $this->url; } } $test = new test($url); $test->showUrl();...> 只需要把变量全局化即可,但是要在方法里面全局化变量
  • 内部类如何调用外部类的方法

    千次阅读 2019-09-28 17:18:45
    内部类如何调用外部类的方法 直接上代码 public class test{ public static void main(String[] args) { Outer.Inner p=new Outer().new Inner(); p.show(); } } class Outer{ int sum; class Inner{ ...
  • 写一个用来判断是否静态和非静态的能不能访问外部的静态变量和非静态变量,答案是静态内部类可以访问静态变量,而不可以访问的非静态内部类。 原因是:当一个静态内部类被使用的时候,它的外部类一定已经...
  • 内部类引用外部类局部变量,必须保证外部类的局部变量为final的,因为内部类和外部类的局部变量生命周期不一样,外部类方法执行完该局部变量可能就没了,但该方法中的内部类可能还在执行(如线程),还要使用该变量...
  • 局部变量和全局变量是从作用域...为什么很多地方就默认为内部变量和外部变量就是局部变量和全局变量 这样子的话那么这句话怎么理解呢?![图片说明](https://img-ask.csdn.net/upload/201603/07/1457318749_145328.png)
  • // 外部类构造函数 public Outter() { } public Inner getInnerInstance() { if(inner == null) inner = new Inner(); return inner; } // 内部类 class Inner { // 内部类构造函数 ...
  • 外部类可以访问内部类private变量

    千次阅读 2018-07-12 21:07:29
    然后查了下,Java规范里确实规定了外部类可以访问内部类的private/protected变量,就像访问自己的private/protected变量一样.........实际上,编译器实现的时候是这样的: Outer类和Inner不再是嵌套结构,而是变为...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 503,850
精华内容 201,540
关键字:

内部类和外部类的变量