Java-内部类

学无止尽5 2024-10-26 09:05:01 阅读 92

在这里插入图片描述

个人主页

学习内部类(Inner Class)是Java编程中一项重要且强大的特性,它允许你在一个类的内部定义另一个类。内部类提供了一种将逻辑上相关的类组织在一起的方式,增加了代码的封装性和可读性。接下来带领大家进入內部类的学习。

1静态内部类

2实例内部类

3匿名内部类

一:静态内部类的使用例子:

<code>class OuterClass{

public int date1=1;

private int date2=2;

public static int date3=3;

static class InnerClass{

public int date4=4;

private int date5=5;

public static int date6=6;

public void test(){

OuterClass outerclass=new OuterClass();

System.out.println(outerclass.date1);

System.out.println(outerclass.date2);

System.out.println(date3);

System.out.println(date4);

System.out.println(date5);

System.out.println(date6);

System.out.println("InnerClass:::test()");

}

}

}

public class Test {

public static void main(String[] args) {

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

innerClass.test();

}

}

在这里插入图片描述

在静态内部类当中去访问外部类非静态成员,必须通过外部内对象引用来访问。如图所示:

在这里插入图片描述

二:实例内部类例子:

<code>class OuterClass{

public int date1=1;

private int date2=2;

public static int date3=3;

class InnerClass{

public int date4=4;

private int date5=5;

public static int date6=6;

public void test(){

OuterClass outerclass=new OuterClass();

System.out.println(date1);

System.out.println(date2);

System.out.println(date3);

System.out.println(date4);

System.out.println(date5);

System.out.println(date6);

System.out.println("InnerClass:::test()");

}

}

}

public class Test {

public static void main(String[] args) {

// OuterClass.InnerClass innerClass=new OuterClass.InnerClass();

OuterClass outerClass=new OuterClass();

OuterClass.InnerClass innerClass=outerClass.new InnerClass();

//OuterClass.InnerClass innerClass=new OuterClass().new InnerClass();

innerClass.test();

}

}

当有与外部相同的成员变量时,则访问的是实例内部类的成员变量。如图;得到的是date1=99.

在这里插入图片描述

那么要访问外部类的date1可以通过外部內类名(OuterClass.this.date1)就可以。

三:匿名内部类的例子:

匿名内部类(Anonymous Inner Class)是Java中一种没有名字的内部类,通常用于简化代码或实现一次性的、简单的类定义。

<code>class 0uterClass {

public void test(){

System.out.println("OuterClass:::test()");

}

}

public class Test{

public static void main(String[] args) {

new 0uterClass(){

@Override

public void test(){

System.out.println("重写了test()方法:::");

}

}.test();

}

}

在这里插入图片描述



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。