把一个类放在另一个类内部定义,这个定义在其他类内部的类就被称为内部类,包含外部类的类被称为外部类。内部类主要有以下作用:

1内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中其他类访问。

2内部类可以直接访问外部类的私有数据,因为内部类被当成外部类的成员。

3匿名内部类适合用于创建那些仅需要一次使用的类。

内部类比外部类多三个使用的修饰符:private、protected、static,非静态内部类不能拥有静态成员。

1非静态内部类

定义内部类,只需要将一个类放在另一个类内部定义即可,此处的类内部包括类中任何地方。格式:public class OuterClass{//内部类定义}

调用:在外部类里调用非静态内部类跟使用普通类没有太大区别,eg:

var c1=new CowOne();//内部类

c1.info()//内部类函数

注:若外部类、内部类成员变量与内部类方法里的局部变量同名,调用它们的方法如下:

(1)在非静态内部类的方法中面调用外部类变量方法:OuterclassName. this. varName;

(2)调用内部类的实例变量方法:this. varName;

(3)方法里变量跟普通变量一样使用。varName;

2静态内部类

使用static修饰的内部类,则这个内部类就属于外部类本身,不属于外部类的某个对象。静态内部类里面可以包含静态成员,也可以包括非静态成员。静态内部类不能访问外部类的实例变量,只能访问外部类成员。定义格式:public class OuterClass{

static class staticInnerClass{

//静态内部类里面定义}

}

调用:使用静态内部类的类名作为调用者(SStaticClass.varName)或者使用静态内部类对象调用(new StaticClass().varName)。

在外部类

以外调用静态内部类和非静态内部类方法:OuterClass. InnerClass varName。

eg:OutClass. InnerClass in =new Out().new InnerClass();//在外部类以外调用内部类。

3局部内部类

把一个内部类放在方法里定义,则这个内部类就是局部内部类,局部内部类在方法内才有效,不能在外部类方法以外使用,所以局部内部类不能使用访问控制符和static修饰符修饰。实际开发中很少使用。

4匿名内部类

匿名内部类适合于创建那种只需一次使用的类,创建匿名内部类时会立即创建一个该类的实例,这个类定义立即消失,匿名内部类不能重复使用。格式:new 实现接口() | 父类构造器(实参列表){//匿名内部类的类体部分}

注意:匿名内部类不能是抽象类,所以匿名内部类必须实现它的抽象父类或者接口里包含的所有抽象方法。匿名内部类不能定义构造器。

Java内部类定义与调用相关推荐

  1. java方法定义 与调用_Java方法的定义及调用

    Java方法的定义及调用 通过以上内容的学习,可以看出方法是一段可以完成某个特定功能的并且可以被重复利用的代码片段.接下来我们来学习一下方法应该怎么定义以及怎么调用. 定义/声明方法的语法格式如下所示 ...

  2. JAVA 方法定义及调用

    1.方法 方法是实现某个功能的一组语句,通常将常用的功能写成一个方法(类中的方法). 方法能实现代码的模块化重用. 方法相当于函数,类似于加工厂.参数=原材料:方法体=加工:返回值(return)=出 ...

  3. 如何新建java内部类_java内部类-1(内部类的定义)

    小胖从官网出发,研究下为什么我们需要些内部类,内部类的区别和联系. 思考三个问题: (1)为什么需要内部类?静态内部类和非静态内部类有什么区别: (2)为什么内部类可以无条件访问外部类成员: (3)为 ...

  4. JAVA的方法的定义和调用

    JAVA的方法的定义 java的方法类类似于其他语言的函数,是一段用来完成特点功能的代码片段,一般情况下,定义一个方法包含以下语法: 修饰符 返回值类型 方法名(参数类型,参数名){--方法体--re ...

  5. java 方法重载调用_Java方法的定义以及调用、方法重载、可变参数以及递归

    何谓方法 Java方法是语句的集合,它们在一起执行一个功能 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用 System.out.println();/ ...

  6. Java方法01 方法(函数)定义、调用、值传递、重载、命令行传递参数

    Java 方法的定义.调用.值传递.重载.命令行传递参数 1. 什么是方法? 2. 方法的定义和调用 3. 值传递和引用传递 4. 方法的重载 5. 命令行传递参数 6. 可变参数(输入参数的数量不确 ...

  7. Java方法:方法解释,方法的定义及调用

    文章目录 方法 方法命名 ⭐方法的定义及调用 方法 System.out.println():调用系统类里面的标准输出对象中的方法 Java方法是语句的集合,在一起执行一个功能 方法是解决一类问题的步 ...

  8. java全栈系列之JavaSE-面向对象(方法的定义与调用)030

    java面向对象编程 面向对象&面向过程 前言: 之前的代码大多数都是属于面向过程的,在程序中有main()方法也叫主方法,程序会由上至下执行main()里面的内容.程序里的方法:例如编写一个 ...

  9. Java学习之路3——方法定义、调用【重拾Java】

    Java学习之路3--方法定义.调用[重拾Java] 方法定义 为什么要写方法 方法完整的定义形式.调用 方法定义的格式 修饰符 返回值类型 返回值 调用格式 方法重载 方法定义 为什么要写方法 对于 ...

  10. Java方法的定义和调用

    Java方法 何为Java方法 Java方法是语句的集合,它们在一起执行一个功能. 方法是解决一类问题的步骤的有序组合. 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用 设计方法的原则:方 ...

最新文章

  1. 2022-2028年中国汽车制动器行业投资分析及前景预测报告
  2. Vivado 随笔(1) 综合属性之 ram_style rom_style?
  3. Python学习笔记:安装python
  4. 如何编写一个Jquery插件
  5. HDU 5389 Zero Escape
  6. Robot Cleaner I
  7. Android 自定义控件 ViewPager头部指示器控件 ViewPagerBelowIndicator
  8. C++:47---绝不重新定义继承而来的缺省参数值
  9. ES6学习笔记(三):教你用js面向对象思维来实现 tab栏增删改查功能
  10. [转载] c++ iterator 失效_C++ STL迭代器失效问题
  11. 今天辞去了联盟的版主职务
  12. 企业生产一线管理应找怎样的好帮手?
  13. 谷歌插件jsonview的下载与安装
  14. FPGA实现IIC协议(一)IIC总线协议
  15. RoboCup智能机器人足球教程(四)
  16. 更换计算机名后打不开PPT,ppt视频换电脑无法播放怎么办
  17. MFC使用自带的MSXML6.dll解析xml(开发环境vc2010)
  18. ACM-水题 Demacia of the Ancients
  19. 苹果手机点击input标签页面放大的解决方法
  20. Destoon增加内容页的浏览历史记录

热门文章

  1. reboot 重启系统命令
  2. 第一台计算机 采用工 作原理,第1讲计算机工作原理模版课件.ppt
  3. 三本学计算机没用吗,腾讯员工:我211学计算机都觉得写代码难,三本的人能写代码为啥考不上211...
  4. python爬取汽车之家数据_Python神技能 | 使用爬虫获取汽车之家全车型数据
  5. 电脑网络禁用了怎么恢复_Tenorshare UltData for Mac(iOS数据恢复备份软件)v9.4.1中文激活版_软件动态论坛...
  6. mysql删除注册表mysqld要删除吗_删库就一定要跑路吗?rm删除文件后空间还存在似乎说明了什么...
  7. 2016河北省职称计算机考试试题及答案,2016年最新河北省职称计算机考试试题及答案..doc...
  8. Java学习笔记之设计模式(4)适配器模式
  9. php7使用什么缓存,PHP7 opcache缓存清理问题
  10. python语言编写一个生成九宫格图片的代码_python生成九宫格图片