public class Animal {
public void shout() {
System.out.println("我是一个动物");
}
}
首先创建了一个类Animal,该类有个方法。接下来创建一个子类Cat继承这个Animal类。
public class Cat extends Animal {
public void test() {
}
class small{
{
test();
shout();
}
}
}
Cat类继承了Animal类的方法,所以在Cat类中创建的内部类small类中,既可以直接调用父类继承来的shout方法,也可以调用本类中的test()方法。也就是说内部类是可以直接调用外部类中的方法的。
public class Cat extends Animal {
public void test() {
}
class small{
{
test();
shout();
System.out.println(this);
}
}
public static void main(String[] args) {
Cat a = new Cat();
Cat.small s = a.new small();
}
}
在内部类small中输出了this,可以得到如下结果。
zijin.labsafety.lab.Cat$small@33909752
可以看到内部类中的this表示的是内部类本身。
所以在内部类中,不能通过this调用外部类的方法。因为this表示的是内部类small,而small类是没有定义方法test和方法shout的。这两个方都是属于外部类 Cat的。