关于内部类的总结

问题描述

//关于内部类的总结://为什么使用内部类?//因为内部类可以直接访问内部类的成员变量包括私有的。//1、内部类定义在外部类成员的位置classOut{privateints=9;classIn{//ints=3;publicvoidprint(){System.out.println(s);}}}//成员位置的内部类可以直接访问外部类的成员变量,包括私有。//2、内部类是静态的classOut2{privatestaticints=9;staticclassIn2{publicvoidprint(){System.out.println(s);}}}//静态内部类只能访问外部类静态的成员变量。//3、内部类是私有的classOut3{privatestaticints=9;privateclassIn3{publicvoidprint(){System.out.println(s);}}publicvoidprint1(){newIn3().print();System.out.println("haha");}}//私有内部类不能再外部类之外建立内部类对象,//只能通过外部类方法里面建立内部类对象,从而使用内部类的方法.//4、内部类定义在成员方法内部classOut4{privatestaticints=9;publicvoidprint1(){classIn4{publicvoidprint(){System.out.println(s);}}newIn4().print();System.out.println("haha");}}//用法跟私有内部类基本相似publicclassInClass{/***@paramargs*/publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubOut.Inin=newOut().newIn();in.print();Out2.In2in1=newOut2.In2();in1.print();Out3out3=newOut3();out3.print1();Out4out4=newOut4();out4.print1();}}

解决方案

解决方案二:

解决方案三:
虽然内部类有这么那么多使用它的好处的观点支持它的存在但是感觉它破坏了Java的:一个.java对应一个同名.class的基本原则所以感觉大型的项目尽量避免使用为好【没啥理论基础,仅仅是个人喜好,仅供参考】
解决方案四:
内部类所能够应用的地方往往是在事件模型里。
解决方案五:
感觉自己写的程序里面很少存在内部类。。。。只是理论上的罢了,。,,实际中没用过,也只是在看JDK原码的时候遇到过内部类。。
解决方案六:
我个人遇到复杂些的情况,还是用内部类的,但基本不用那些复杂的内部类用法,因为这反而增加了程序的复杂性。java是个崇尚简单的语言。java8出来之前,常见的场景是事件处理程序所用的匿名内部类,这很常见。除此之外,当某个类仅仅在另外一个类的内部使用的时候,就建议用内部类。这也是面向对象封装的体现。这种情况下,内部类也不需要被外部代码访问,情况最简单。若是内部类需要被外部访问的话,那么我会把拿出来,作为单独的类,而非内部类。

时间: 2024-12-04 00:39:34

关于内部类的总结的相关文章

spring+ibatis的dao接口 能使用内部类吗?

问题描述 spring+ibatis的dao接口 能使用内部类吗? spring+ibatis的dao接口 能使用内部类吗? spring扫描xml加载的 要怎么配置? 现在加载不到namespace指定的内部类 public interface MissionTypeMatterMapper { int deleteByPrimaryKey(Integer mission_matter_id); void insert(MissionTypeMatter record); List<Missi

Java基础-10总结形式参数,包,修饰符,内部类

你需要的是什么,直接评论留言. 获取更多资源加微信公众号"Java帮帮" (是公众号,不是微信好友哦) 还有"Java帮帮"今日头条号,技术文章与新闻,每日更新,欢迎阅读 学习交流请加Java帮帮交流QQ群553841695 分享是一种美德,分享更快乐! 类,抽象类,接口的综合小练习 /* 教练和运动员案例(学生分析然后讲解) 乒乓球运动员和篮球运动员. 乒乓球教练和篮球教练. 为了出国交流,跟乒乓球相关的人员都需要学习英语. 请用所学知识: 分析,这个案例中有哪些

内部类-java方法参数的修饰符问题

问题描述 java方法参数的修饰符问题 java在写方法时,为什么有的方法参数用final修饰? 还有就是内部类存在的意义是什么? 也就是说方法中的内部类和类中的内部类各有什么应用场景(请有实战经验的大神各自举个例子)? //问题补充(关于方法中的内部类) 我的意思是: pubic class TestClass{ public void fun(){ public class Test1{ //........ } } } 解决方案 为了实现一些内容,常常需要这么玩: public void

使用技巧:内部类和匿名类优化Java代码

技巧|优化 Java 1.1通过对Java语言规范进行修改,显著简化了一些实用结构的实现.在那些修改中,最引人注目的就是内部类和匿名类.如运用得当,它们可使程序更易理解和维护.下面来看看这些特性具体是如何工作的,如何正确使用它们,以及如何避免一些常见的错误. 内部类 简单地说,"内部类"是在另一个类的内部声明的类.从Java 1.1开始,你可在一个类中声明另一个类,这与声明字段和方法非常相似.包装了内部类声明的类就称为"外部类". 实际上,Java语言规范还允许你做

java内部类的总结

内部类总结: 1内部类的嵌套可以理解成类的链关系,在构造一个内部类(非static)的实例的时候,会将直接外层类的实例作为参数传进构造函数,而外层类的实例也是用其外层类的实例构造,所以是一种链状关系,内部的类可以使用所有外层的类的实例,而外层的类不能使用内层的类, 应用a.this(最外层类实例) ,a.b.c.this(链中某个外层的实例). class TheOuter{ class kk { class gg { int tt = 100; } } class aa { class bb

关于继承内部类——java编程思想示例程序分析

编程|程序|继承|示例 关于继承内部类--java编程思想示例程序分析:class Egg2 { protected class Yolk { public Yolk() { System.out.println("Egg2.Yolk()"); } public void f() { System.out.println("Egg2.Yolk.f()"); } } private Yolk y = new Yolk(); public Egg2() { System

Java内部类this$0字段产生的一个小bug

首先查看下面一段代码,我指出了问题代码的所在,读者先自己思考一下这段代码会有什么问题. 这是用clone方法完整拷贝一个二项堆(BinomialHeap)结构的代码.二项堆中包含一个内部类BinomialHeapEntry,这个内部类的对象即二项堆中的每一个结点,除了包含结点对应的关键字外,还记录父节点parent,下一个兄弟结点sibling和第一个孩子结点child三个指针.二项堆的根表通过每棵二项树根节点的sibling指针链接. cloneBinomialTree(BinomialHea

浅析Java中的嵌套类和内部类

以前看<Java编程思想>的时候,看到过嵌套类跟内部类的区别,不过后来就把它们的概念给忘了吧.昨天在看<数据结构与算法分析(Java语言版)>的时候,又遇到了这个概念,当时就很大的疑惑:嵌套类跟内部类有什么区别?只有是否有关键字static的区别吗? 所以今天找了个时间查了一下两者的详细区别,总结在这篇博客中,既方便自己的复习和学习,也启示他人吧. 1,概念: 定义在一个类内部的类,叫作"嵌套类".嵌套类分为两种:static的和非static的.后者又有一个专

为什么要用内部类:控制框架

到目前为止,大家已接触了对内部类的运作进行描述的大量语法与概念.但这些并不能真正说明内部类存在的原因.为什么Sun要如此麻烦地在Java 1.1里添加这样的一种基本语言特性呢?答案就在于我们在这里要学习的"控制框架". 一个"应用程序框架"是指一个或一系列类,它们专门设计用来解决特定类型的问题.为应用应用程序框架,我们可从一个或多个类继承,并覆盖其中的部分方法.我们在覆盖方法中编写的代码用于定制由那些应用程序框架提供的常规方案,以便解决自己的实际问题."控

java内部类标识符

由于每个类都会生成一个.class文件,用于容纳与如何创建这个类型的对象有关的所有信息(这种信息产生了一个名为Class对象的元类),所以大家或许会猜到内部类也必须生成相应的.class文件,用来容纳与它们的Class对象有关的信息.这些文件或类的名字遵守一种严格的形式:先是封装类的名字,再跟随一个$,再跟随内部类的名字.例如,由InheritInner.java创建的.class文件包括: InheritInner.class WithInner$Inner.class WithInner.c