本帖最后由 张研老师 于 2015-12-5 10:35 编辑
包: 为什么要有包
将字节码.class 进行分类存放
包其实就是文件夹
包的定义和注意事项
定义格式: package 包名;
多级包用. 分开即可
定义包用 分开即可
注意事项:
package 必须是程序的第一条可执行代码.
package 在一个java文件中只能有一个
如果没有package 默认表示无包名
带包的类如何编译和运行.
编译 javac -d . 类名.java
运行,java 包名.类名
不同包下类之间的访问.
第一种方式
通过 包名 类名的形式调用.
第二种方式:
import java.util.Scanner;
可以通过 导包实现.
import 包名.类名;
注意 用谁就导入谁 不要写.*的形式
面试题
package import class 之间有没有顺序关系
有 从上到下 package import class
注意:
一个java文件中 package 语句值能有一个 而import class 可以多个(class 一般在java文件中 只会写一个)
权限修饰符:
private 默认 protected public
private Y
默认 Y Y
protected Y Y Y
public Y Y Y Y
private 只能在本类中使用
记忆. 给自己使用
默认, 可以在本类或者同包下的类使用
给同包下的类使用
protected 本类 同包下的类 不同包下的子类
给 子类使用.
public 公共的. 给大家使用
类:
默认修饰符 public
状态修饰符:final
抽象修饰符:abstract
用的最多的就是:public
总结 以后写代码. 成员变量全部用 private 其他(类 构造 方法) 全用public
有种特殊情况 工具类的构造方法用private 修饰
注意:
被public 修饰的类 叫公共类 也叫定级类 一个java文件中 公共类 智能有一个 并且公共类名必须和java文件名一致
内部类:
概述: 类里边还有一个类. 里边那个类就是内部类.
访问特点: 内部累可以直接访问外部类成员. 包括私有
外部类要访问内部类的成员 必须创建对象.
外部类名 内部类名 对象名 = 外部类对象 内部类对象;
内部类分类
: 成员内部类: 定义在外部类成员位置的类就叫成员内部类
简单记忆:记忆在成员位置
局部内部类 : 定义在局部位置.
成员内部类:
加私有: 可以在外部中提供一个公共的访问.
加静态 方便调用 外部类名.内部类名 对象名 = 外部类对象.内部类对象
局部内部类
定义在局部位置
答: 也能为局部变量生命周期是一爱于方法, 方法调用完毕后. 局部变量就施放了. 如果此时局部内部类对
象还唉使用局部变量 就会报错 . 所以该局部变量必须加final 修饰. 就是为了延长局部变量生命周期 但是jdk
1.8取消了这个事 所以我觉得这是一个bug
面试题:
在内部类的成员方法中 如果使用局部变量. 内部类的成员变量 以及 外部类的成员变量
局部变量: 直接用.
内部类的成员变量: 通过this.的方式使用
外部类的成员变量: 通过外部类名.this.的形式调用.
内部类之所以能使用外部类的成员 是因为内部类能获取到外部类的引用 外部类名.this.
匿名内部类:
概述 没有名字的局部内部类
前提: 存在一个类或者借口. 哲理的类可以是具体类也可以是抽象类
格式:new 类名或者接口名() {
重写类或者接口中的所有抽象方法
};
本质 : 是一个继承了该类或者实现了该借口的子类匿名对象.
理解: 其实匿名内部类就是实现了接口(或者继承了类的匿名的子类对象)
什么时候使用匿名内部类
1, 匿名内部类值针对重写一个抽象方法
2, 当我们看到一个方法的形参的数据类型是一个借口 或者抽象类的时候 就可以考虑使用匿名内部类
(在实际开发中 用到的特别多)
|