包
- 1.包的作用是为了解决 项目命名冲突的问题,将我们的.class文件分类存放
- 2.包其实就是文件夹
- 3.具体存放.class文件时,可以按照功能来分别存放,也可以按照模块分别存放
- 4.如果要引用 其他类【不在同一个包下】,一定要用import导入(java.lang包下的除外)
- 5.只要类中 有package,则 该类的全名变成了 包名.类名.java(针对终端)
本类 | 同一个包下 | 不同包下(子类) | 不同包下(无关类) | |
---|---|---|---|---|
private | √ | |||
默认 | √ | √ | ||
protected | √ | √ | √ | |
public | √ | √ | √ | √ |
修饰符
* 权限修饰符 private 默认 protected public
* 状态修饰符 static final
* 抽象修饰符 abstract
内部类
- 在外部类内部定义类【成员内部类】
- 可以将内部类,当做外部类的成员看待
- 声明成员内部类:
外部类.内部类 对象名 = 外部类对象.new 内部类();
- 在内部类中可以访问外部类中所有成员
- 如何(在内部类)访问到外部类同名成员:
外部类.this.同名变量;
- 声明静态内部类:
外部类.内部类 对象名 = new 外部类.内部类();
- 静态内部类中的方法,相对于外部类而言,都可以看成static方法(静态只能引用静态)
- 局部内部类
- 外部类方法中定义的类
- 局部内部类 如果操作 局部变量,默认final修饰(延缓 局部变量 释放销毁时间)
- 匿名内部类
-
前提 需要存在一个类或接口
-
声明匿名内部类:
接口|父类 引用 = new 接口|父类(构造函数列表) { 重写所有abstract方法; }
-
声明匿名内部类方法2:
new 接口|父类(){ 重写所有abstract方法; }.直接调用里面的方法;
-