匿名内部类里面不能有静态方法吗??

如题所述

在使用匿名内部类时,要记住以下几个原则:
 · 匿名内部类不能有构造方法。  (因为匿名内部类是没有类名的)
 · 匿名内部类不能定义任何静态成员、方法和类。
 · 匿名内部类不能是抽象类。(因为在创建匿名内部类的时候,会立即创建匿名内部类的对象。从而也可知匿名内部类必须实现它的抽象父类或者接口里包含的所有抽象方法)
 · 匿名内部类不能是public,protected,private,static。  
 · 只能创建匿名内部类的一个实例。
   · 一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。  
 · 因匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效。
   · 内部类只能访问外部类的静态变量或静态方法。
匿名类和内部类中的中的this :
有时候,我们会用到一些内部类和匿名类。当在匿名类中用this时,这个this则指的是匿名类或内部类本身。这时如果我们要使用外部类的方法和变量的话,则应该加上外部类的类名。
关于内部类的作用:
一个内部类对象可以访问创建它的外部类对象的内容, 甚至包括私有变量!Java编译器在创建内部类对象时,隐式的把其外部类对象的引用也传了进去并一直保存着。这样就使得内部类对象始终可以访问其外部类对象,同时这也是为什么在外部类作用范围之外向要创建内部类对象必须先创建其外部类对象的原因。
如果内部类里的一个成员变量与外部类的一个成员变量同名,也即外部类的同名成员变量被屏蔽了,怎么办?没事,Java里用如下格式表达外部类的引用:
外部类名.this
Java中的静态内部类是没有了指向外部的引用,类似C++中的嵌套类。Java内部类也可以是局部的,它可以定义在一个方法甚至一个代码块之内(记住:匿名内部类就是局部内部类的形式之一)。在java的事件处理的匿名适配器中,匿名内部类被大量的使用。
如果是在一个方法中的匿名内部类,可以利用这个方法传进你想要的参数,不过记住,这些参数必须被声明为final。即如果匿名内部类需要访问外部类的局部变量,则必须使用final修饰符来修饰外部类的局部变量,否则系统将报错。

追问

在创建匿名内部类的时候,就创建了匿名内部类的对象是什么意思?

温馨提示:内容为网友见解,仅供参考
无其他回答

java内部类与匿名内部类作用分别是什么?
Java 内部类 \\x0d\\x0a分四种:成员内部类、局部内部类、静态内部类和匿名内部类。 \\x0d\\x0a1、成员内部类: 即作为外部类的一个成员存在,与外部类的属性、方法并列。\\x0d\\x0a注意:成员内部类中不能定义静态变量,但可以访问外部类的所有成员。\\x0d\\x0apublic class Outer{\\x0d\\x0aprivate static in...

inner class访问规则
对于静态方法的内部类,它具有以下访问权限:可以访问外部类的静态变量,如"静态变量",以及外部类的静态方法。同样,非静态方法的匿名内部类也有类似的权限,可以访问外部类的静态变量"静态变量",以及方法的final变量,比如"2"。对于非静态方法的内部类,其访问能力更为广泛。它不仅可以访问外部类的实例变...

java各种类的区别
1、成员内部类 非静态的内部类,外部需要实例化之后进行访问,和静态不同,内部的变量不可声明为静态的,但是可声明为常量,即可以加static final。2、静态内部类 相当于是静态方便,外部可以访问可以修饰,但是注意,外部的实例化对象无法访问到静态的类,静态的方法和成员可以访问。3、局部内部类 在方法...

java内部类与匿名内部类作用分别是什么?
1、成员内部类: 即作为外部类的一个成员存在,与外部类的属性、方法并列。注意:成员内部类中不能定义静态变量,但可以访问外部类的所有成员。public class Outer{private static int i = 1;private int j=10;private int k=20;public static void outer_f1(){ \/\/do more something}public void out_f2(){ \/...

Static Nested Class 和 Inner Class的不同
·匿名内部类不能有构造方法。·匿名内部类不能定义任何静态成员、方法和类。·匿名内部类不能是public,protected,private,static。·只能创建匿名内部类的一个实例。·一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。·因匿名内部类为局部内部类,所以局部内部类的所有限制都对其...

什么是内部类
·匿名内部类不能定义任何静态成员、方法和类。 ·匿名内部类不能是public,protected,private,static。 ·只能创建匿名内部类的一个实例。 ·一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。 ·因匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效。 A、继承式的匿名...

java代码:new 类名(){方法定义}应该如何理解?
·匿名内部类不能定义任何静态成员、方法和类。 ·匿名内部类不能是public,protected,private,static。 ·只能创建匿名内部类的一个实例。 ·一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。 ·因匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效。 3、用匿名内部类...

java中内部类
而且方法体中的局部内部类不允许有访问修饰符。class Outer{ int num=10; public void print(final int aArgs) { class Inner { int num=20; public Inner() { System.out.println("This is Inner.");\/\/此句可看出它与匿名内部类用法的不同。 } public void print() { int num=30; System.out...

在Java的类库中,有没有哪些类是静态类?
一般情况下是不可以用static修饰类的。如果一定要用static修饰类的话,通常static修饰的是匿名内部类。在一个类中创建另外一个类,叫做成员内部类。这个成员内部类可以静态的(利用static关键字修饰),也可以是非静态的。由于静态的内部类在定义、使用的时候会有种种的限制。所以在实际工作中用到的并不多。在开发过程中...

请问JAVA中匿名内部类有什么用,举个例子,谢谢
\/\/ 外部类访问内部类的非静态成员:实例化内部类即可 Inner inner = new Inner();inner.inner_f2();} public static void main(String[] args) { new Outer().outer_f3();} } 注:一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类,没有类名,根据多态,我们使用其父...

相似回答