概念讲义转载自https://www.sxt.cn/Java_jQuery_in_action/five-inner-class.html
-----------------------------------------------------------------------------------------------------------------------------------------------------------
内部类的概念https://www.sxt.cn/Java_jQuery_in_action/five-inner-class.html
内部类的分类https://www.sxt.cn/Java_jQuery_in_action/five-classification.html
-----------------------------------------------------------------------------------------------------------------------------------------------------------
public class TestInnerClass{
public static void main(String[] args){
Outer.Inner inner = new Outer().new Inner();
inner.show();
Outer outer = inner.getOuter();
outer.testOuter();
Outer outer1 =new Outer();
Outer.Inner inner1 = outer1.new Inner();
outer1.testOuter();
inner1.show();
}
}
class Outer{
private int age = 10;
public void testOuter(){
System.out.println("Outer.testOuter()");
}
class Inner{
private Outer outer = Outer.this;
public Outer getOuter() {
return outer;
}
public void show(){
System.out.println("外部类成员变量age:"+Outer.this.age);
}
}
}
public class TestStaticInnerClass {
public static void main(String[] args){
Outer2 outer2 = new Outer2();
Outer2.Inner2 inner2 = new Outer2.Inner2();
Outer2.Inner2 inner3 = new Outer2.Inner2();
inner2.age =30;
inner2.Speak();
inner3.age =40;
inner3.Speak();
inner2.Speak();
}
}
class Outer2{
public Outer2()
{
System.out.println("外部类被执行了!");
}
static class Inner2{
public static int age = 20;
public Inner2(){
System.out.println("静态内部类被执行了!");
}
public void Speak(){
System.out.println("静态内部类的age为:"+age);
}
}
}
外部类被执行了!
静态内部类被执行了!
静态内部类被执行了!
静态内部类的age为:30
静态内部类的age为:40
静态内部类的age为:40
内部类有外部类的this指针,但是静态内部类是没有外部类的this指针的,毕竟两者创建的时间也不用。这就直接导致了静态内部类无法直接通过this指针访问外部类的变量。静态内部类和内部类的调用方法也不同(这是当然的)
public class NoNameInnerClass {
public static void test01(AA a){
a.aa();
}
public static void main(String[] args){
NoNameInnerClass.test01(new AA() {
@Override
public void aa() {
System.out.println("匿名内部类的方法执行!");
}
});
}
}
interface AA{
void aa();
}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。