内部类和匿名内部类
来源:互联网 发布:文章采集软件 编辑:程序博客网 时间:2024/05/19 21:01
内部类
- 定义在类里面的类
分析事物时,发现该事物的描述还有事物,且这个事物还在访问被描述事物的内容
内部类编译生成的字节码文件名是 外部类名$内部类名
内部类也可以定义在局部,但是只能访问局部中被final修饰的局部变量
class Outer{ private int outerNum = 1; class Inner { int num = outerNum;//内部类可以直接访问外部类成员 void innerMethod()//外部类想要访问内部类成员必须先创建内部类对象 { System.out.println("Inner class"+num); } } void outerMethod() { System.out.println("outer class"); }}class InnerClass { public static void main(String[] args) { //直接访问内部内的成员 Outer.Inner c = new Outer().new Inner();//语法格式,必须要内部类所属 c.innerMethod(); //如果内部内是静态的,则相当于外部类,不用创建外部类对象也可以访问 //OuterInner c = new Outer.Inner(); //如果内部类里面有静态方法,那么内部类必须是静态的 //则可以直接访问 //Outer.Inner.innerMethod(); }}
匿名内部类
必须有继承或是实现一个外部类或者接口
格式:new 父类或者接口名()
{
子类内容
}.调用方法;
1.调用方法可不写,按需求加上
2.;不可以掉,表示一个语句结束
3.new 并不是创建了一个父类或者接口,而是创建了匿名内部类,在{}内具体实现了子类
abstract class Fruit { abstract void eat();}class FruitShop{ String fruit = "apple"; //如果没有匿名类,要使用内部类的方法 /* class Inner extends Fruit { void eat() { System.out.println(fruit+"水果怎么吃"); } } void method() { new Inner().eat(); } */ //如果使用匿名内部类就方便多了 void method() { new Fruit(){// void eat() { System.out.println(fruit+"水果怎么吃"); } //还可以定义其他方法 }.eat(); }}class AnonyInnerClass{ public static void main(String[] args) { new FruitShop().method(); }}
1 0
- 内部类和匿名内部类
- 内部类和匿名内部类
- 内部类和匿名内部类
- 内部类和匿名内部类
- 内部类和匿名内部类
- 内部类和匿名内部类
- 内部类和匿名内部类
- 内部类和匿名内部类
- 内部类和匿名内部类
- 内部类和匿名内部类
- 内部类和匿名内部类
- 内部类和匿名内部类
- 匿名内部类和内部类
- 内部类和匿名内部类
- 内部类和匿名内部类
- java 内部类 和 匿名内部类
- java 内部类和匿名内部类
- 内部类和匿名内部类
- 穿透内网,连接动态ip,内网ip打洞-----p2p实现原理
- 苹果的CoreFoundation部分源代码
- Libevent源码分析-----TAILQ_QUEUE队列
- 【dotnet跨平台】dotnet-cli典型场景
- Gson使用总结
- 内部类和匿名内部类
- mybatis中关于like的写法
- KEIL_MDK编译问题:Error: L6200E
- 去掉<textarea>中的html标签
- PHP 二维array转换json(json数组)
- "algorithms 4th"---symbol table
- Linux
- 6.4 bounce模块
- g++参数介绍