java中关于内部类的一些总结

/**
 * 问题:java学习之---------->java的内部类
 * 首先什么叫内部类:所谓的内部类就是在一个类的内部再定义一个类
 * 这个类就叫做内部类
 * 内部类与类的成员一样有static类、private/public类
 * 还有两种一个是局部内部类、匿名内部类
 * 它们之间的差别只要在于与主类之间的访问方式及权限的问题
 * 比如成员内部类---->既可以访问主类的成员,切主类也能访问它的成员
 * ------------------------------------------------------------------>
 * 同时它们之间可以互相访问的原因也随带了解下:
 * 首先就是:内部类可以访问外部类的原因,是因为在内部类生成的时候系统会给内部类一个
 * 主类的this指针,从而导致内部类可以访问主类的成员
 * 但是主类可以访问内部类的实现就有些不同了-------->因为this指针是随着对象的产生而出现的
 * 而在主类生成的时候,并没有内部类的对象,所以实际上外部类在访问内部类的成员的时候还要new一个内部类的对象再通过对象去访问内部类的成员
 * 此时就是真正体现主类可以访问内部类的解释了------------->所谓的主类可以访问内部类
 * 就是指在主类中new出一个内部类的对象之后,不管内部类中的成员是private还是protected都可以调用
 * ------------------------------------------------------------------>
 * 好了,基本的原理懂了之后,再来介绍另一种内部类--->局部内部类
 * 顾名思义----所谓的局部自然和局部变量一样,通常是在一个函数体中定义的类/变量
 * 局部内部类依旧可以访问外部类的成员------原因依旧如上
 * 但是局部内部类在出了局部的范围之后,就是不可见的了,更不用说外部类还能访问内部类了
 * ------------------------------------------------------------------------------------------------>
 * 在往下走就到了static静态内部类了-------------->和静态变量及方法一样,静态的东西都可以剥夺主体而单独的存在
 * 因为它们的创建时间比主类还要早,这也导致了一个严重的问题---->在静态类的内部没有隐含的主类的this指针
 * 这也直接导致static不能访问主类的成员
 * 但是主类是可以访问静态类的---------->原因自然不言而喻了
 * 补充:如果局部静态类------>那么在双方都互相屏蔽了
 * ------------------------------------------------------------------------------------------>
 * 再往下走就到了我们的关键了---->也是四大内部类的最后一个了-->匿名内部类
 * 首先既然叫匿名------->那么这个类自然是没有名字的了,那么它是如何定义的呢?
 * 请看如下的代码:
 * new 父接口()
 * {
 *    //匿名内部类的实现部分
 * }
 * 参考资料的解释:
 * 定义:父接口的匿名的内部的子类对象
 * 当一个函数的参数是一个接口时,可以使用匿名内部类来实现这个接口来作为它的参数
 * 匿名内部类最后被lambda表达式给代替了---------------->lambda表达式更加简洁
 * 接口需要一个实现类来实现它---------->当我们new 父接口的时候就相当与创建了一个没有名字的类一样
 * 而这个类就叫做匿名内部类-------------------->*******
 * 结束了-----
 * ------------------------------------------------------------------>
 * 下面贴上前面的一部分实现代码
 *class Solution {
    private int num=0;

    private static class node
    {
        protected int val;
        private node left;
        private node right;

        public int getVal()
        {
            return this.val;
        }

        public node(int val)
        {
            this.val=val;
        }
    }

    public void print()
    {
        node space=new node(99);
        System.out.println(space.getVal());
    }

    public Solution(int num)
    {
        node space=new node(99);

        this.num=num;
    }

}
 */再此最后再插入一段对内部类运用的简单的例子吧!就以创建二叉树为例子class Tree{    private node root;        private class node    {        private int val;        private node left;        private node right;        public node(int val)        {            this.val=val;        }        public void getNode(int val)        {            if(val<this.val)            {                if(this.left==null)                    this.left=new node(val);                else                    this.left.getNode(val);            }            else            {                if(this.right==null)                    this.right=new node(val);                else                    this.right.getNode(val);            }        }        public void showNode()        {            if(this.left!=null)                this.left.showNode();            System.out.print(this.val);            if(this.right!=null)                this.right.showNode();        }    }    public void get(int val)    {        if(root==null)            root=new node(val);        else        {            root.getNode(val);        }    }    public void show()    {        if(root!=null)        {            root.showNode();        }    }}

原文地址:https://www.cnblogs.com/z2529827226/p/11794567.html

时间: 2024-09-29 19:24:13

java中关于内部类的一些总结的相关文章

Java中的内部类(成员内部类、静态内部类、局部内部类、匿名内部类)

Java中的内部类(成员内部类.静态内部类.局部内部类.匿名内部类) 神话丿小王子的博客主页 我们先看这样一段话:人是由大脑.肢体.器官等身体结果组成.而组成我们人体的心脏它也有自己的属性和行为(血液.跳动),显然,此处不能单方面用属性或者方法表示一个心脏了,而需要一个类,但是这个类要依赖于人这个类存在(因为心脏不能脱离人体而存活,当然不考虑现今社会的发达科技,只从正常情况下来说),所心脏以需要写在人类的内部.内部类就相当于其中的某个器官之一. 首先看看什么是内部类:在类的内部定义另一个类.没错

【转 Java 中的内部类和匿名类

 Java 中的内部类和匿名类 2008-10-16 13:47:41 标签:Java 内部类 匿名类 休闲 职场 Java 中的内部类和匿名类* 为什么需要内部类? Java 内部类有什么好处?为什么需要内部类? 首先举一个简单的例子,如果你想实现一个接口,但是这个接口中的一个方法和你构想的这个类中的一个方法的名称,参数相同,你应该怎么办?这时候,你可以建一个内部类实现这个接口.由于内部类对外部类的所有内容都是可访问的,所以这样做可以完成所有你直接实现这个接口的功能. 不过你可能要质疑,更改一

java中的内部类和匿名内部类的使用

部分内容参考http://www.imooc.com/ 内部类: 什么是 Java 中的内部类 问:什么是内部类呢? 答:内部类( Inner Class )就是定义在另外一个类里面的类.与之对应,包含内部类的类被称为外部类. 问:那为什么要将一个类定义在另一个类里面呢?清清爽爽的独立的一个类多好啊!! 答:内部类的主要作用如下: 1. 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类 2. 内部类的方法可以直接访问外部类的所有数据,包括私有的数据 3. 内

【转】Java中的内部类和匿名类

Java内部类(Inner Class),类似的概念在C++里也有,那就是嵌套类(Nested Class),乍看上去内部类似乎有些多余,它的用处对于初学者来说可能并不是那么显著,但是随着对它的深入了解,你会发现Java的设计者在内部类身上的确是用心良苦.学会使用内部类,是掌握Java高级编程的一部分,它可以让你更优雅地设计你的程序结构.下面从以下几个方面来介绍: 第一次见面 public interface Contents {    int value();} public interfac

浅谈Java中的内部类

最近在讲Java中的内部类,感觉内部类实际上对于初学者用得不多,那么内部类简单的说,其实就是在一个类的内部定义的类. 按照定义的情况分为:成员内部类,局部内部类,静态内部类,匿名内部类. 成员内部类,就是定义一个当作类的成员变量的类. 局部内部类,就是在类里面定义一个当作局部变量的类,通常是在方法或代码块中使用. 静态内部类,就是在类中定义一个静态变量,而该静态变量是一个类. 匿名内部类,通常是在创建一个接口对象,该对象是在创建对象的同时实现接口,而该接口的实现只是在此处使用一次,所以不需要定义

Java中的内部类怎么用

一.为什么需要内部类?java内部类有什么好处?为什么需要内部类? 首先举一个简单的例子,如果你想实现一个接口,但是这个接口中的一个方法和你构想的这个类中的一个方法的名称,参数相同,你应该怎么办?这时候,你可以建一个内部类实现这个接口.由于内部类对外部类的所有内容都是可访问的,所以这 样做可以完成所有你直接实现这个接口的功能. 不过你可能要质疑,更改一下方法的不就行了吗? 的确,以此作为设计内部类的理由,实在没有说服力. 真正的原因是这样的,java中的内部类和接口加在一起,可以的解决常被C++

Java基础(十五):Java 中的内部类

问:什么是内部类呢? 答:内部类( Inner Class )就是定义在另外一个类里面的类.与之对应,包含内部类的类被称为外部类. 问:那为什么要将一个类定义在另一个类里面呢?清清爽爽的独立的一个类多好啊!! 答:内部类的主要作用如下: 1. 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类 2. 内部类的方法可以直接访问外部类的所有数据,包括私有的数据 3. 内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便 问:内部类有几种呢? 答:内部

Java中的内部类(回调)

一.内部类的主要作用如下: 1. 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类 2. 内部类的方法可以直接访问外部类的所有数据,包括私有的数据 3. 内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便. 二.内部类可分为以下几种: 成员内部类 静态内部类 方法内部类 匿名内部类. 三.1,定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接去 new 一个内部类对象,即:内部类 对象名 = 外部类对象.new 内部类( );

那些java中的内部类

java内部类是从JDK1.1开始出现的,因此,很多人都不陌生,但是又会觉得不熟悉.原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下.所以,这里将从四个方面做一个简单的总结: 一.内部类基础 在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类.广泛意义上的内部类一般来说包括这四种:成员内部类.局部内部类.匿名内部类和静态内部类.下面就先来简单了解一下这四种内部类的用法. 1.成员内部类 成员内部类是最普通的内部类,它的定义为位于另一个类的内部

Java中的 内部类(吐血总结)

1.内部类分类 1)普通内部类 类的实例相关,可以看成是一个实例变量.内部类的类名由 "外部类.内部类" 确定. 普通内部类不能声明 static相关的变量或方法.内部类可以直接访问外部类的所有成员(包括 private成员),隐式或显式(外部类.this).而外部类可以 new 内部类,实例相关的可以直接 new,static 相关(类相关)需要使用实例的引用去 引用.new.内部类 class 前可以添加 private 与 protected 表示只对其外部类或其子类有访问权限.