public class Outer {
Outer()
{
//System.out.print("我要");
}
void method()
{
System.out.print("吃");
}}
public class Test { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Outer a=new Outer(){
void method()
{
System.out.print("饭");
}
};
new Outer().method();
a.method();
}}
Outer()
{
//System.out.print("我要");
}
void method()
{
System.out.print("吃");
}}
public class Test { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Outer a=new Outer(){
void method()
{
System.out.print("饭");
}
};
new Outer().method();
a.method();
}}
package com.mystudy.test2;class Outer {
Outer() {
// System.out.print("我要");
}
void method() {
System.out.print("---吃");
}
}
public class Test {
public static void main(String[] args) {
Outer a = new Outer() {//我的理解是这儿新建了一个匿名内部类,提供了method的方法
void method() {
System.out.print(">?>饭");
}
};
new Outer().method();//执行---吃",建立了一个Outer的对象
a.method();//执行>?>饭
}}
所以你的Outer类 不要用public关键字修饰; 这个类是两个独立的类,不存在匿名类,或者内部类这一说,因为这两个是单独存在的,各自实现自己的方法,只不过通过主方法类的实例化,调用这些定义的方法,具体调用过程如下所示:class Outer {Outer()
{
System.out.print("我要");
}
void method()
{
System.out.print("吃");
}}
public class Test9 {/**
* @param args
*/
public static void main(String[] args)
{
// TODO Auto-generated method stub //实例化的过程,会调用这个类无参的构造方法,输出“我要”
Outer a=new Outer()
{
void method()
{
System.out.print("饭");
}
};
//这儿 new Outer()实例化生成一个对象,继续调用Outer的 无
// 参 构造方法,继续输出 “我要”,并且这个对象调用了Outer类的
// method()的方法,输出“吃”;new Outer().method();
//通过Outer 类型的引用变量a调用了public类的method()的方法,输 // 出"饭"
a.method();
}}