Java的内部类与Ruby的内部类的区别

  今天经过 night-stalker的提醒,突然意识到Ruby的内部类和Java的内部类存在不少区别。其中我发现最大的区别是:
    在Java中,内部类方法可以访问其自身的数据字段,也能够访问创建它的外部类的数据字段。在Java中内部类对象要有一个银隐含引用,指向创建它的对象。
    而在Ruby中,恰好相反。外部类的方法可以访问内部类的字段,但是反过来却不行。
    若单独的使用,只要熟悉相应的语法规则,不会出现问题。但是要在JRuby中的时候,就有可能出现问题,因为有2中截然不同的方式实现内部类,这时可能会出现乱子!
   


module MyPackage
	module InnerPacage
		class TheWorker
			def initialize(foo)
				@foo=WorkHelper.new(foo)
			end

			def foo
				@foo.caclulate
			end
			class WorkHelper
				def initialize(value)
					@value=value
				end
				def caclulate
					@value**2
				end
			end
		end
	end
end
puts MyPackage::InnerPacage::TheWorker.new(10).foo
		


class ButtonPanel extends JPanel{

	public Button(){
		JButton yellowbutton=new JButton("yellow");
		add(yellowbutton);
		ColorAction yellowAction new ColorAction(Color.YELLOW);
		yellowbutton.addActionListener(yellowAction);
	}

	private class ColorAction implements ActionListener
	{
		public ColorAction(Color c){
			backcolor=c;
		}

		public void actionPerformed(Action event){
			setBackground(backcolor);
		}

		private Color backcolor;
	}
}
 

你可能感兴趣的:(java,C++,c,Ruby,jruby)