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修饰的嵌套类不常用.有的地方没有嵌套类和内部类的区分,直接是嵌套类就称作内部类,没 ...
随机推荐
- 高斯消元与行列式求值 part1
两道模板题,思路与算法却是相当经典. 先说最开始做的行列式求值,题目大致为给一个10*10的行列式,求其值 具体思路(一开始看到题我的思路): 1.暴算,把每种可能组合试一遍,求逆序数,做相应加减运算 ...
- tar.gz,直接解压可用?还是需要编译安装?
在linux搭建环境,下载的tar.gz安装包,有的直接解压就可以用,有的需要编译安装后才可用 怎么知道该怎么操作呢? 其实,tar -zxvf解压后,进入目录看README.md就知道答案了 另外, ...
- BZOJ2127Happiness
题目描述 高一一班的座位表是个n*m的矩阵,经过一个学期的相处,每个同学和前后左右相邻的同学互相成为了好朋友.这学期要分文理科了,每个同学对于选择文科与理科有着自己的喜悦值,而一对好朋友如果能同时选文 ...
- 洛谷P3268 [JLOI2016]圆的异或并(扫描线)
扫描线还不是很熟啊--不管是从想的方面还是代码实现的方面-- 关于这题,考虑一条平行于\(y\)轴的扫描线从左到右扫描每一个圆,因为只有相离和内含两种关系,只用在切线处扫描即可 我们设上半圆为1,下半 ...
- spring 中的设计模式
https://mp.weixin.qq.com/s?__biz=MzU0MDEwMjgwNA==&mid=2247485205&idx=1&sn=63455d2313776d ...
- CF1155F Delivery Oligopoly
题意:给定简单无向图,求一个最小的边集使得这些点是边双,输出方案.n <= 14 解:考虑一个边双肯定是一条一条的链拼起来的.于是每次枚举一条链加上去就行了. 设fs表示点集s形成边双的最小边数 ...
- python7 数据类型的相互转化 字符编码
复习 1.深浅拷贝 ls = [1, 'a', [10]] 值拷贝:直接赋值 ls1 = ls, ls中的任何值发生改变,ls1中的值都会随之改变 浅拷贝:通过copy()方法 ls ...
- ES6-Babel-Browserify使用教程
ES6-Babel-Browserify使用教程 定义package.json文件 { "name" : "es6-babel-browserify", &qu ...
- golang-flag的问题
如果选择-flag x 就是不支持布尔型
- 一封来自恶魔的挑战邀请函,那些你见过或者没见过的C语言指针都在这里了
前言 相信大多数的同学都是第一门能接触到语言是C/C++,其中的指针也是比较让人头疼的部分了,因为光是指针都能专门出一本叫<C和指针>的书籍,足见指针的强大.但如果不慎误用指针,这些指针很 ...