Day06(类包、内部类)
在static静态方法中能直接调用的方法只能是静态方法。要想调用其它非静态方法,需要借助对象。
类包:是Java提供的一种管理类文件的机制。可以解决类名冲突问题,在开发庞大应用程序时帮助开发人员管理庞大的应用程序组件,方便软件复用。
同一个包中类相互访问时,可以不指定包名。
同一个包中的类不必存放在同一个位置,只要将CLASSPATH分别指向这两个位置即可。
在文件中指定包名时需要将package关键字放置在程序的第一行非注释代码。
导入包: import package's name *; 加上 * 表示可以在程序中使用导入包中的所有类
导入静态成员: import static 静态成员;
内部类:
1.成员内部类:
在一个类中使用内部类,可以在内部类中直接使用外部类的成员方法和成员变量,(尽管被修饰为private)。
内部类的实例要绑定在外部类的实例上,如果从外部类中初始化一个内部类对象,那么内部类对象就会绑定在外部类对象上。
内部类可以访问它的外部类成员,但内部类成员只有在内布类的范围内是可知的,不能被外部类使用。
如果在外部类和非静态方法之外实例化内部类对象,需要使用外部类。内部类的形式指定该对象的类型。
2.局部内部类:
内部类可以在类的局部位置定义(如类的方法或任意的作用域中均可以定义内部类)
3.静态内部类:在内部类前面添加修饰符static。
一个静态内部类中可以声明static成员,但是在非静态内部类中不可以声明静态成员。
普通的内部类对象隐式地在外部保存了一个引用,指向创建它的外部类对象,但吐过内部类被定义为static,就会有更多限制。
静态内部类的特点:
如果创建静态内部类的对象,不需要其外部类的对象。
不能从静态内部类的对象中访问非静态外部类的对象。
与非静态内部类不同,静态内部类的实例化不需要一个外部类的实例为基础,可以直接实例化,因为没有一个外部类的实例,所以在静态内部类里面不可以访问外部类的实例属性和方法,除了可以访问外部类的私有静态成员外,静态内部类和普通类没什么区别。
4.匿名内部类:
指在声明一个类的同时实例化它,使代码更加简洁精炼。
通常,要使用一个接口或者抽象类,都必须创建一个子类,有时为了快速使用,直接实例化一个抽象类,并“当场”实现其抽象方法。
内部类定义结束后,需要加分号标识,这个分号并不是代表定义内部类结束的标识,而是代表创建引用表达式的标识。
匿名内部类编译后,会产生以“外部类名$序号”为名称的.class文件,序号以1~n排列,分别代表1~n个匿名内部类。
Day06(类包、内部类)的更多相关文章
- spring 笔记1: mvn 中Controller方法的参数不能是嵌套类(内部类)。
最近做spring开发,个人认为,Controller和客户端js通讯时传递的参数类 只使用某几个方法,为了减少对其他功能的影响,想把参数类定义为Controller类的 嵌套类(内部类).但是实践发 ...
- JAVA 嵌套类和内部类
一.什么是嵌套类及内部类? 可以在一个类的内部定义另一个类,这种类称为嵌套类(nested classes),它有两种类型: 静态嵌套类和非静态嵌套类.静态嵌套类使用很少,最重要的是非静态嵌套类, ...
- 分析java 嵌套类与内部类
一.什么是嵌套类及内部类? 可以在一个类的内部定义另一个类,这种类称为嵌套类(nested classes),它有两种类型:静态嵌套类和非静态嵌套类.静态嵌套类使用很少,最重要的是非静态嵌套类 ...
- Maven类包冲突终极解决方案
本文转自:http://ian.wang/106.htm 举例A依赖于B及C,而B又依赖于X.Y,而C依赖于X.M,则A除引B及C的依赖包下,还会引入X,Y,M的依赖包(一般情况下了,Maven可通过 ...
- tomcat中设置多项目共享jar;类包
随着服务器上的tomcat部署的项目越来越多,最近在部署一个新的项目的时候出现内存溢出的错误 Exception in thread "main" java.lang.OutOfM ...
- eclipse引入jar类包的源代码
为了方便查看源代码,有时候需要对jar类包,引入源代码. 下载源代码 源代码是zip或者rar的压缩包 引入到项目中
- 深入理解java嵌套类和内部类
一.什么是嵌套类及内部类 能够在一个类的内部定义还有一个类.这样的类称为嵌套类(nested classes),它有两种类型:静态嵌套类和非静态嵌套类.静态嵌套类使用非常少,最重要的是非静态嵌套类,也 ...
- Java中的嵌套类和内部类
以前看<Java编程思想>的时候,看到过嵌套类跟内部类的区别,不过后来就把它们的概念给忘了吧.昨天在看<数据结构与算法分析(Java语言版)>的时候,又遇到了这个概念,当时就很 ...
- (十二)java嵌套类和内部类
嵌套类和内部类:在一个类里边定义的类叫做嵌套类,其中没有static修饰的嵌套类是我们通常说的内部类,而被static修饰的嵌套类不常用.有的地方没有嵌套类和内部类的区分,直接是嵌套类就称作内部类,没 ...
随机推荐
- Jetson TX1 compile pytorch issues
1. c++: internal compiler error: Killed (program cc1plus) reason: memory out, need swapfile 2. NCCL ...
- 台达PLC实现远程下载程序
台达PLC实现远程下载程序 日期:2019-04-27 时间 08:33:57 让物联变得更简单 18-09-2411:25 明明在公司调试没问题的设备一到 ...
- JDK源代码学习-基础类
一.概述 1.Java,是一套语言规范,例如规定了变量如何定义.控制语句如何写等,提供基本的语法规范.JDK是java自带的一套调用组件,是对基本java语法规范的进一步封装,jdk中都是使用java ...
- Docke--利用 commit 理解构建镜像
Docker 利用commit理解构建镜像 镜像是容器的基础,每次执行 docker run 的时候都会指定哪个镜像作为容器运行的基础.当我们使用Docker Hub的镜像无法满足我们的需求时,我们就 ...
- python三大器(装饰器/生成器/迭代器)
1装饰器 1.1基本结构 def 外层函数(参数): def 内层函数(*args,**kwargs); return 参数(*args,**kwargs) return 内层函数 @外层函数 def ...
- Outlook 2013 日历/任务本地备份与还原
1.日历: 备份日历:切换到日历项,按如下步骤备份.文件 --> 保存日历 --> 其它选项: 日期范围:指定日期(开始日期:2018/1/1,结束日期:2018/12/31) 详细信息: ...
- FTP文件上传并支持断点续传(一)—— win10 本地环境 ftp站点构建
由于之前项目开发是采用是采用的FTP文件上传,就一直想学习,但由于FTP服务器是公司的,为了方便就像把本地变成ftp站点,其实很简单,但也有很多坑 这里简单介绍一下自己遇到的坑 一:开通本地的ftp权 ...
- 超越村后端开发(3:安装djangorestframework+序列化+API开发前期准备)
1.安装djangorestframework 1.安装djangorestframework及其依赖包markdown.django-filter. pip install djangorestfr ...
- mysql函数调用过程
1.conn = mysql_init(NULL);//初始化 MYSQL *conn; 2.mysql_real_connect(conn, "localhost", &quo ...
- 树莓派安装 MySQL 时出现错误的解决方法
今天被要求解决一个树莓派无法正常安装 MySQL 的问题.以下是解决过程记录. 我在 Mac 上利用 SSH 连接到树莓派,执行 sudo apt-get install mysql-server m ...