java的内部类
来源:互联网 发布:java reentrantlock 编辑:程序博客网 时间:2024/05/29 12:29
成员内部类:
1、 Inner 类定义在 Outer 类的内部,相当于 Outer 类的一个成员变量的位置,Inner 类可以使用任意访问控制符,如 public 、 protected 、 private 等
2、 Inner 类中定义的 test() 方法可以直接访问 Outer 类中的数据,而不受访问控制符的影响,如直接访问 Outer 类中的私有属性a
3、 定义了成员内部类后,必须使外部类对象来创建内部类对象,而不能直接去 new 一个内部类对象,即:内部类 对象名 = 外部类对象.new 内部类( );
外部类是不能直a接使用内部类的成员和方法滴
//外部类 HelloWorld
public class HelloWorld{
//内部类 Inner在HelloWorld的类中//
public class Inner{
//内部类方法//
public void show(){
system.out.println("welcome to java");
}
}
public void print(){
show(); //错误 外部类不能直接访问内部类//
}
}
1、可先创建内部类的对象,然后通过内部类的对象来访问其成员变量和方法。
2、 如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量,可以使用 this 关键字。如:外部类.this.成员
//创建外部类的对象
HelloWorld o = new HelloWorld ();
//创建内部类的对象
Inner inn = o.new Inner();
静态内部类:
1、 静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问
2、 如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过“成员名”直接调用外部类的静态成员
3、 创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名= new 内部类();
//外部类
public class SOuter{
private int a=99;//外部变量的私有变量///
static int b=2;//外部变量的静态变量//
//静态内部类//
public static class SInner{
int b=2;//内部类变量//
public void test(){
system.out.pritnln("外部类的b值为:"+SOuter.b);
system.out.println("内部类的b值为:"+b);
}
}
//测试静态内部类//
public static main(String[] args){
SInner si=new SInner();//直接创建内部类对象//
si.test();//调用test方法
}
}
方法内部类:
方法内部类就是内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,即只在该方法内可以使用。
//外部类
public class MOuter{
//外部类方法//
public void show(){
final int a=25;//常量//
int b=13;//变量//
//方法内部类//
class MInner{
int c=20;
public void pritn(){
system.out.pritnln("访问内部类c:"+c);
system.out println("访问外部类a:"+a);
}
}
MInner mi =new MInner();//创建方法内部类对象
mi.print();//调用内部类方法
}
//测试方法内部类//
public static void main(String[] args){
MOuter mo=new MOuter();//创建外部类对象
mo.show;
}
}
一定要注意哦:由于方法内部类不能在外部类的方法以外的地方使用,因此方法内部类不能使用访问控制符和 static 修饰符。
- java的内部类、匿名内部类、局部内部类
- java的内部类
- Java的内部类
- java的内部类
- Java的内部类
- java的内部类
- java的内部类
- JAVA的内部类
- Java的内部类
- java的内部类
- java的内部类
- JAVA的内部类
- java的内部类
- java的内部类
- java的内部类
- java的内部类
- java的内部类
- Java的内部类
- windows 多屏幕多任务使用
- 通用mapper、分页助手的BaseService
- 《剑指offer》:删除链表中重复的结点
- div上下循环移动
- 怎样在GridView底部添加按钮
- java的内部类
- mysql之将字段改为unique
- Java基础之进制
- 【POJ】-3641-Pseudoprime numbers(快速幂,大数素数判定)
- 2进制转10进制 模板实现
- HDU 2087 剪花布条简单KMP
- SAP-MM-代码大全
- php 常用功能之导入导出-zend 框架下导出excel
- 省市区联动