10分钟搞懂Java内部类【JAVA教程】,java,内部类

JAVA ytg3114 11个月前 (11-27) 381次浏览 0个评论 扫描二维码

10分钟搞懂Java内部类【JAVA教程】,java,内部类

依据定义的体式格局差别,内部类分为静态内部类、成员内部类、部分内部类、匿名内部类四种。

1.静态内部类

定义在类内部的静态类,就是静态内部类。

public class Out {
     private static int a;
     private int b;
     public static class Inner {
         public void print() {
             System.out.println(a);
         }
     }
}

1)静态内部类可以接见外部类一切的静态变量和要领,即使是private的也一样。

(引荐视频:java视频教程

2)静态内部类和平常类一致,可以定义静态变量、要领、组织要领等。

3)其他类运用静态内部类需要运用“外部类.静态内部类”体式格局。以下所示:Out.Inner inner = new Out.Inner();  inner.print();

4)Java鸠合类HashMap内部就有一个静态内部类Entry。Entry是HashMap寄存元素的笼统,HashMap内部保护Entry数组用来寄存元素,然则Entry对运用者是通明的。像这类和外部类关系密切的,且不依靠外部类实例的,都可以运用静态内部类。

2.成员内部类

定义在类内部的非静态类,就是成员内部类。成员内部类不能定义静态要领和变量(final润饰的除外)。这是由于成员内部类黑白静态的,类初始化的时刻先初始化静态成员,假如许可成员内部类定义静态变量,那末成员内部类的静态变量初始化递次是有歧义的。

public class Out {
     private static int a;
     private int b;
     public class Inner {
         public void print() {
             System.out.println(a);
             System.out.println(b);
         }
     }
}

3.部分内部类(定义在要领中的类)

定义在要领中的类,就是部分类。假如一个类只在某个要领中运用,则可以斟酌运用部分类。

public class Out {
     private static int a;
     private int b;
     public void test(final int c) {
         final int d = 1;
         class Inner {
             public void print() {
                 System.out.println(c);
             }
         }
     }
}

4.匿名内部类(要继续一个父类或完成一个接口、直接运用new来生成一个对象的援用)

匿名内部类,我们必需要继续一个父类或完成一个接口,固然也仅能只继续一个父类或完成一个接口。同时它也是没有class关键字,这是由于匿名内部类是直接运用new来生成一个对象的援用。

1)匿名内部类仅能被运用一次,建立匿名内部类时,它会马上建立一个该类的实例,该类的定义会马上消逝,所以匿名内部类时不可以被重复运用的。

2)匿名内部类不能定义组织函数,不能存在任何的静态成员变量和静态要领。

3)匿名内部类中的要领不能是笼统的,它必需要完成接口或继续父类的一切笼统要领。

4)匿名内部类接见的外部类成员变量或成员要领必须用static润饰,内部类可以接见外部类私有变量和要领。

public abstract class Bird {
     private String name;
     public String getName() {
         return name;
     }
     public void setName(String name) {
         this.name = name;
     }
     public abstract int fly();
}
public class Test {
     public void test(Bird bird){
         System.out.println(bird.getName() + "可以飞 " + bird.fly() + "米");
     }
     public static void main(String[] args) {
         Test test = new Test();
         test.test(new Bird() {
             public int fly() {
                 return 10000;
             }
             public String getName() {
                 return "大雁";
             }
         });
         }
}

本文来自ki4网,java教程栏目,迎接进修!

以上就是10分钟搞懂Java内部类的细致内容,更多请关注ki4网别的相干文章!


搜讯息 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:10分钟搞懂Java内部类【JAVA教程】,java,内部类
喜欢 (0)
[1353713598@qq.com]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址