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

2016-02-19 10:02 36 1 收藏

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

【 tulaoshi.com - 编程语言 】

内部类访问规则

•内部类可以直接访问外部类中的成员,包括私有。访问格式:外部类名.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();
     }
 }

静态内部类

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

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

 */
 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);
         }
     }
 }

局部内部类

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

•内部类定义在局部时,可以直接访问外部类中的成员。
•访问局部变量必须被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();
     }
 }

匿名内部类

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

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

/*
 匿名内部类
 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();
 }

来源:http://www.tulaoshi.com/n/20160219/1593069.html

延伸阅读
map的三种遍历方法! 集合的一个很重要的操作---遍历,学习了三种遍历方法,三种方法各有优缺点~~ 代码如下: /*  * To change this template, choose Tools | Templates  * and open the template in the editor.  */ package cn.tsp2c.liubao; import java.util.Collection; import java.util.HashMap; import java.util.It...
一.与静态方法的比较 一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,静态方法在类加载的时候 就已经加载 可以用类名直接调用 比如main方法就必须是静态的 这是程序入口。两者的区别...
JAVA数组与容器类主要有三方面的区别:效率、类型和保存基本类型的能力 。在JAVA中,数组是一种效率最高的存储和随机访问对象引用序列的方式。数组就是一个简单的线性数列,这使得元素访问非常快速。但是为此付出的代价却是数组的大小被固定,并且在其生命周期中不可改变。 由于范型和自动包装机制的出现,容器已经可以与数组几乎一样方便地...
标签: Java JAVA基础
简单介绍一下Java关于xml的API,这样大家看到了缩写就知道是干什么的了。水平有限,多多包涵。 1、JAXP(Java API for XML Parsing) 2、JAXB(Java API for XML Binding) 3、JAXM(Java API for XML Messaging) 4、JAX-RPC(Java API for XML-RPC) 1、JAXP定义了在Java中使用DOM, SAX, XSLT的...
一.获得控制台用户输入的信息 /** *//**获得控制台用户输入的信息 * @return * @throws IOException */public String getInputMessage() throws IOException...{System.out.println("请输入您的命令∶");byte buffer[]=new byte[1024];int count=System.in.read(buffer);char[] ch=new char[count-2];//最后两位为结束符,删去不...

经验教程

890

收藏

85
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部