A. java内部类有几种
Java中的几种内部类:
成员内部类:作为外部类的一个成员存在,与外部类的属性、方法并列。当某个类除了他的外部类,不会被其他类使用时应该选择使用成员内部类。
局部内部类:局部内部类定义在外部类的某个代码块或方法块中。如果只会在某个方法或块中创建这个类的对象,就可以使用局部内部类。
匿名内部类:匿名内部类一般定义在需要传递接口或回调的的地方,一个匿名内部类一定是在new的后面,用其隐含实现一个接口或继承一个类。假如只需要创建这个类的一个对象不需要知道其实际类型(不需要使用到类名),那么就可以使用匿名内部类。
静态内部类:和成员内部类一样,作为外部类的一个成员存在,与外部类的属性、方法并列,只不过在声明类的时候加入了static关键字。有时候,使用内部类只是为了把一个类隐藏在另外一个类的内部,并不需要内部类引用外围类对象。这时可以使用静态内部类,以便取消产生对外部类的引用。
B. java可以在方法内部定义内部类吗
可以的
把类放在方法内
class Outer {
public void doSomething(){
class Inner{
public void seeOuter(){
}
}
}
}
(1)、方法内部类只能在定义该内部类的方法内实例化,不可以在此方法外对其实例化。
(2)、方法内部类对象不能使用该内部类所在方法的非final局部变量。
因为方法的局部变量位于栈上,只存在于该方法的生命期内。当一个方法结束,其栈结构被删除,局部变量成为历史。但是该方法结束之后,在方法内创建的内部类对象可能仍然存在于堆中!例如,如果对它的引用被传递到其他某些代码,并存储在一个成员变量内。正因为不能保证局部变量的存活期和方法内部类对象的一样长,所以内部类对象不能使用它们。
C. java中一个方法里面可以再定义一个方法么
不能,方法内部只能调用一个方法,或者你可以使用方法的内部类来实现方法内部类中定义方法。
D. java中能在方法中定义方法吗
方法中不能直接定义方法,但可以在方法中定义类,类里面再定义方法:
Java code?
public static void main(String[] args) {
class B {
void test() {
System.out.println("test()");
}
}
new B().test();
}
E. java中静态内部类是怎么定义的
需要了解2个概念:内部类和静态修饰符static
1)首先,用内部类是因为内部类与所在外部类有一定的关系,往往只有该外部类调用此内部类。所以没有必要专门用一个Java文件存放这个类。
2)静态都是用来修饰类的内部成员的。比如静态方法,静态成员变量,静态常量。它唯一的作用就是随着类的加载(而不是随着对象的产生)而产生,以致可以用类名+静态成员名直接获得。
这样静态内部类就可以理解了,因为这个类没有必要单独存放一个文件,它一般来说只被所在外部类使用。并且它可以直接被用
外部类名+内部类名
获得。
以下举例说明怎么使用:
Student类有个叫School的内部类(非静态)
Student
stu
=
new
Student();
stu.School
sch
=
new
stu.School();
sch就是School的一个对象。
假如School是内部静态类:
Student.School
sch
=
new
Student.School();
F. 在java定义内部类
public class A {
void a{ class B{...} }
public static void main(String[] args {
...
}
public class A {
public class B {
...}
public static void main(String[] args {
...
}
这些都是可以的
public class A {
void a {
Protected class B {
...}
}
public static void main(String[] args {
...
}
这一个不可以。
对于内部类,就想类的属性一样,可以用 public private protected 修饰,或者什么都不加,但是如果这个内部类在类的方法里面,public private protected都不能使用。就想在方法中定义变量不能加这三个修饰符一样,方法中的内部类也不能使用设三个修饰符,在方法中定义一个内部类,一般是为了隐藏某种实现细节,这个方法中的内部类是不能在这个方法之外用new 关键字来创建的,但是可以作为这个方法的返回参数。
关于你补充的问题,我还没使用过。我觉得Java作为一门高级语言,应该有这方面的设计,我没有用过。
G. java 在方法中定义内部类 访问方法的参数或方法中的变量
亲测1.6 1.7都会编译出错.
Java 8的新特性,但其实只是让你方便一点,在你这个内部类里效果等同于final
比如,如果你想修改x或info
a = 100
那么会告诉你:
Local variable defined in an enclosing scope must be final or effectively final
注意后面说的effectively final,就是说表面上没有final修饰,但实际上必须和final有相同的效果
H. Java 类中定义方法的问题
类中方法定义内部类通常是为了隐藏实现。
此处为这次测试的代码清单:
值得注意的是,类B前智能加final或abstract,不能加public private protected,而且方法a()不能定义为
B a()
{
class B implement C{...}
...
return new B();
}
而一定要返回外部定义了的接口C或者外部定义了的父类。
I. java方法内部 能不能写方法
肯定不行的,比如public void h(){ void f(){}}这样的语句是错误的,只能在方法内部调用其他方法,不能在方法内部定义方法,也就是不支持内部方法。
J. java 中方法内可以定义方法吗方法内可以定义类吗
方法里不能定义方法
方法里可以定义类(内部类 匿名类)
于是方法中还是可以间接定义方法的
楼上的胡说