一 、静态内部类
静态内部类只能访问外部类的静态成员变量或者静态方法,生成静态内部类对象的方式:
外部类名.静态类名 对象名=new 外部类名.静态类名();
二、成员内部类
class MemberInner {
private int a = 3;
class Inner {
public void doSomeThing() {
System.out.println(a);
}
}
}
public class MemberInnerTest {
public static void main(String[] args) {
MemberInner.Inner inner = new MemberInner().new Inner();
inner.doSomeThing();
}
}
生成对象方式:外部类名.静态类名 对象名=new 外部类名().new 内部类名();
其实就是先new出外部类的对象,通过外部类对象再生成内部类的对象,因为非静态的内部类 是属于某个对象的,而静态内部类的属于外部类的(属于类、不是对象)
若想在内部类范围外部类成员变量 语法是: 外部类名.this.变量名
三、匿名内部类
匿名内部类会隐式的继承一个父类或者实现一个接口
public class Test {
public String get(Date date){
return date.toLocaleString();
}
public static void main(String[] args) {
Test test=new Test();
String str=test.get(new Date(){
//这个地方new Date并非是Date的对象,而是Date的子类一个对象
@Override
@Deprecated
public String toLocaleString() {
return "hello word";
}
});
System.out.println(str);
}
}
匿名内部类没有构造方法
在Java中,非静态(匿名)内部类会默认隐性引用外部类对象。而静态内部类不会引用外部类对象
Java内部类
最新推荐文章于 2024-10-28 23:25:49 发布