包:
分类管理你项目中的.java文件
包的特点:
可以有多层分类
一般情况下是域名倒叙
不同包下的文件名可以重复
//package 第一级包.第二级;
包的声明必须是第一行代码
相同包下的类可以直接访问,不需要做其他的操作
类的全名:
包名.类名
不同包下的互相访问
1.使用类的全名访问
2.使用import将类导入
注意:*代表通配符,代表导入这个包下的所有的类,并没有导入子包下的类
权限修饰符:
public 同一个类中 相同包下不同的类 不同的包下的类
default 同一个类中 相同包下不同的类
protected 同一个类中 相同包下不同的类
private 同一个类中
default:当前包下的使用
protected:让子类对象使用
修饰符
类 成员变量 成员方法 构造方法
public Y Y Y Y
default Y Y Y Y
protected N Y Y Y
private N Y Y Y
abstract Y N Y N
static 可以修饰内部类 Y Y N
final Y Y Y N
常见的规则:
以后我们使用public来修饰类,一个java文件中只能有一个类,如果一个文件中有多个类,类名与文件名相同的类,必须用public修饰,其他的类不能使用public修饰
以后我们所有的成员变量都使用private修饰
以后所有的方法使用public修饰
以后所有的构造方法用public修饰
如果你不想让创建对象,使用private修饰
使用场景:工具类,单例设计模式。
内部类
成员内部类
在类的成员位置,和成员方法以及成员变量的位置是一样的
在内部类中可以直接访问外部类的成员包括私有成员
成员内部类的修饰符
我们可以使用权限修饰符修饰成员内部类,但是如果我们使用私有来修饰,则无法在其他类中访问
我们可以使用static修饰成员内部类,不用在创建外部类的对象了
我们可以使用abstract,final修饰成员内部类,但是没有太多意义
局部内部类
在方法内,出了方法之后就无法使用。和普通的局部成员相同。
匿名内部类
可以把匿名内部类看成是一个没有名字的局部内部类
定义在方法中
必须在定义匿名内部类的时候创建他的对象
格式:
new 类/接口(){
如果是创建了继承这个类子类对象,我们可以重写父类的方法
如果是创建了实现这个接口的子类对象,我们必须实现该接口的所有方法
};
原理:而是创建了继承这个类的子类对象或者是创建了实现这个接口的子类对象。
用匿名内部类方式创建对象,只能重写父类中有的方法,如果添加自己所特有的方法,则无法调用。
匿名内部类的应用场景:
做为参数进行传递
共性:
内部类仍然是一个独立的类,在编译之后内部类会被编译成独立
的.class文件,但是前面冠以外部类的类名和$符号
内部类不能用普通的方式访问。内部类是外部类的一个成员,
因此内部类可以自由得访问外部类的成员变量,无论是否是private的。 |
|