java中关于内部类的使用详解

沒落的高富帅

沒落的高富帅

2016-02-19 10:02

有了下面这个java中关于内部类的使用详解教程,不懂java中关于内部类的使用详解的也能装懂了,赶紧get起来装逼一下吧!

内部类访问规则

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

•内部类可以直接访问外部类中的成员,包括私有。访问格式:外部类名.this
•外部类要访问内部类必须创建内部类对象。
•内部类在成员位置上,可以被成员修饰符修饰。
代码如下:

public class InnerClassDemo1 {
     public static void main(String[] args){
         Outer ou =new Outer();
         ou.method();// 4  3
         Outer.Inner oi =new Outer().new Inner();
         oi.function2();

     }

 }
 class Outer{
     private int x=3;
     class Inner{
         int x=4;
         void function1(){
             System.out.println(x);
             System.out.println(Outer.this.x);
         }
         void function2(){
             Outer.this.method();
         }
     }
     public void method(){
         Inner in =new Inner();
         in.function1();
     }
 }

静态内部类

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

•内部类定义了静态成员,内部类必须是静态的。
代码如下:

/*
 注意:内部类定义了静态成员,内部类必须是静态的。

 */
 class InnerClassDemo2
 {
     public static void main(String[] args)
     {
         new Outer.Inner().function();//创建静态内部类对象
     }
 }
 class Outer
 {
     private static int x=5;
     static class Inner//静态内部类 只能访问外部类的静态成员
     {
         void function()
         {
             System.out.println("inner:"+x);
         }
     }
 }

局部内部类

•内部类定义在局部时,可以直接访问外部类中的成员。
•访问局部变量必须被final修饰。
代码如下:

/*
 内部类定义在局部时:可以直接访问外部类中的成员,因为还持有外类中的引用。
 但是不可以访问它所在的局部中的变量,只能访问被final修饰的局部变量

 */

 class  InnerClassDemo3
 {
     public static void main(String[] args)
     {
         Outer out =new Outer();
         out.method(7);
     }
 }
 class Outer
 {
     int x=3;
     public void method(final int a)
     {
         class Inner
         {
             void function()
             {
                 System.out.println(a);
             }
         }
         new Inner().function();
     }
 }

匿名内部类

•匿名内部类是内部类的简写格式。
•匿名内部类的前提:内部类必须继承一个类或者实现接口。
•匿名内部类不能创建构造函数。
代码如下:

/*
 匿名内部类
 1.匿名内部类其实就是内部类的简写格式
 2.定义匿名内部列的前提。
   内部类必须是继承一个类或者实现接口
 3.匿名内部类的格式:new 父类或者接口(){定义子类内容}
 */
 class InnerClassDemo4
 {
     public static void main(String[] args)
     {
         Demo d=new Demo()
         {
             void show()
             {
                 System.out.println("匿名内部类show方法");
             }
             void method()
             {
                 System.out.println("匿名内部类method方法");
             }
         }.show();
         d.method();
     }
 }
 abstract class Demo
 {
     abstract void show();
 }

展开更多 50%)
分享

猜你喜欢

java中关于内部类的使用详解

编程语言 网络编程
java中关于内部类的使用详解

Java基础:关于Java编程语言中的内部类说明

编程语言 网络编程
Java基础:关于Java编程语言中的内部类说明

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

java开发之内部类的用法

编程语言 网络编程
java开发之内部类的用法

java匿名内部类实例简析

编程语言 网络编程
java匿名内部类实例简析

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

讲解Java中如何构造内部类对象以及访问对象

编程语言 网络编程
讲解Java中如何构造内部类对象以及访问对象

基于java内部类作用的深入分析

编程语言 网络编程
基于java内部类作用的深入分析

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

sqlserver2008查看表记录或者修改存储过程出现目录名无效错误解决方法

sqlserver2008查看表记录或者修改存储过程出现目录名无效错误解决方法

java线程之使用Runnable接口创建线程的方法

java线程之使用Runnable接口创建线程的方法
下拉加载更多内容 ↓