Inner Class----内部类

1、Java中,内部类定义在类的范围内,分为4种:静态内部类、成员内部类、局部内部类、匿名内部类

2、静态内部类(static inner class):只能访问外部类的静态成员变量与成员方法,生成静态内部类的方式:

OuterClass.InnerClass inner = new OutClass.InnerClass();

例如:

public class StaticInnerClassTest {
public static void main(String[] args) {
StaticInner.Inner inner = new StaticInner.Inner(); 
inner.test();
}
}
class StaticInner
{
private static int a = 4;
public static class Inner
{
public void test()
{
System.out.println(a);
}
}
}

3、成员内部类(member inner class):

(1)class MemberInner
{
private int a = 4;
public class Inner
{
private int a = 5;
public void test()
{
System.out.println(a);
}
}
}

当调用test()时会输出:5,就近原则,先输出其本身的属性值;如果本身没有该属性,则调用外部类的属性。如果我们想要访问外部类的a,则可以使用OuterClass.this.a即:MemberClass.this.a

(2)成员内部类可以访问外部类的静态的与非静态的成员方法与成员变量。生成成员内部类的对象的方式为:

OuterClass.InnerClass inner = new OuterClass().new InnerClass();

若想在成员内部类中访问外部类的成员变量,可以使用:OuterClass.this.a;

4、局部内部类(local inner class)(用的最少):定义在方法中,只能访问方法中生命的final类型的变量

public class LocalInnerClassTest {
public static void main(String[] args) {
LocalInner inner = new LocalInner();
inner.doSomething();
}
}
class LocalInner {
public void doSomething() {

final int a = 4;//局部内部类只能访问方法中的final变量
class Inner {
public void test() {
System.out.println("helloWorld");
}
}
new Inner().test();
}
}

5、匿名内部类(Anonymous Inner Class):使用最多,它是一个Local Inner Class,没有名字、构造方法,但是它会隐式的继承一个父类或实现一个接口,

public class AnonymousInnerClassTest {
@SuppressWarnings("deprecation")
public String get(Date date)
{
return date.toLocaleString();
}
public static void main(String[] args) {
AnonymousInnerClassTest test = new AnonymousInnerClassTest();
String str = test.get(new Date(){
public String toLocaleString()//匿名内部类重写了它的父类的toLocaleString()方法
{
return "hello world";
}
});//new Date(){}生成了一个继承了Date的类的对象 ,比如 public class MyDate extends Date{},该new Date(){}生成的是MyDate的对象
System.out.println(str);
}
}






发的萨菲

例子例子:













评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值