黑马程序员技术交流社区
标题:
内部类和final
[打印本页]
作者:
银离子
时间:
2015-1-4 23:38
标题:
内部类和final
内部类只能调用final修饰的变量,那这段代码是怎么回事呢?
public class text8 {
public static void main(String[] args) {
outer oer=new outer();//创建对象
oer.outMethod(8);
}
}
class outer{
private int x=100;
private void outMethod2(int a)//外部类方法
{
System.out.println(a+" outMethod2");
}
void outMethod(int x)
{ inner inn=new inner(); //创建内部类对象
inn.inMethod(45); //调用内部类函数
System.out.println(x+" outMethod");
}
//内部类
class inner{
void inMethod(int a)//内部类方法
{ int y=a+x; //访问外部类中的x
outMethod2(6); //调用外部类函数
System.out.println(y+" inMethod");
}
}
}
复制代码
作者:
王延龙
时间:
2015-1-5 09:32
内部类的种类:
(1)成员内部类;(2)静态内部类;(3)方法内部类;(4)匿名内部类
楼主提到的内部类只能调用final修饰的变量出现在,方法内部类。
内部类定义在外部类的方法中,方法内部类只是在该方法的内部可见,即只在该方法内可以使用。
由于方法内部类不能在外部类的方法以外的地方使用,因此方法内部类不能使用访问控制符和static修饰符。
代码如下:希望能帮到你
作者:
王延龙
时间:
2015-1-5 09:35
package com.solve_problem_0105;
/*
* 实现需求:测试方法内部类
* 即:内部类定义在外部类的方法中
* 方法内部类只是在该类的的方法的内部可见,只可以在方法内使用;
* 方法内部类只能访问外部类中被final修饰的变量
* 方法内部类不能使用访问控制符和static修饰符
*/
public class TestMethodOuter {
public void show(){
int a = 1;
final int b = 3;
//方法内部类不能使用访问控制符和static修饰符
class MethodInner{
int c = 2;
public void print(){
// System.out.println("访问外部类的数据"+a); //报错编译不通过
System.out.println("访问外部类的final数据: "+b);
System.out.println("访问内部类的变量数据: "+c);
}
}
//创建方法内部类的实例对象
MethodInner mi = new MethodInner();
//调用内部类的方法
mi.print();
}
//测试方法内部类
public static void main(String[] args){
//创建外部类对象
TestMethodOuter tmo = new TestMethodOuter();
//调用外部类方法
tmo.show();
}
}
复制代码
作者:
446111220
时间:
2015-1-5 09:40
看大神详解
作者:
银离子
时间:
2015-1-5 10:05
王延龙 发表于 2015-1-5 09:35
谢谢了:handshake
作者:
hmyf150122
时间:
2015-1-5 11:23
对啊 oer.outMethod(8);->inMethod(45);->y=45+100;//内部类可以访问成员变量的,知识方法内部类只能访问final修饰的成员
作者:
hmyf150122
时间:
2015-1-5 11:27
对啊 oer.outMethod(8);->inMethod(45);->y=45+100;//内部类可以访问成员变量的,知识方法内部类只能访问final修饰的成员->outMethod2(6); 打印6 outMethod2
->System.out.println(y+" inMethod");打印145 inMethod
-> System.out.println(x+" outMethod");打印8 outMethod
作者:
王景阳
时间:
2015-1-5 11:43
我发现 你解释的很到位哦 二楼的楼主 其实内部类的作用范围和局部变量类似 都是在一定范围内有效 超过超过范围内 无法调用
作者:
dede风
时间:
2015-1-5 12:04
学习中
作者:
赵涛涛
时间:
2015-1-5 22:29
王延龙 发表于 2015-1-5 09:35
谢谢详解!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2