今日内容
包
权限修饰符
内部类
包(package)
包的作用
用来分类管理Java文件
包的特点
(1)可以有多层,每一层之间用.来隔开
(2)相同包下不能有同名的类,不同包下可以有同名的类
(3)包声明使用package关键字,包声明必须位于文件的第一行有效代码
包的命名规范:
全部都小写,如果有多层使用.来隔开
一般都是公司域名倒着写,www.itheima.com->com.itheima
不同包的下的类互相访问
相同包下的类可以互相访问
不同包下的类的访问需要导包,使用import关键字
导包的快捷键:
alt+/
ctrl+shift+o
权限修饰符(4种)
public > protected > 默认 > private
本类 本包 不同包的子类 不同包的其他类
public √ √ √ √
protected √ √ √
默认 √ √
private √
修饰符的总结
权限修饰符
public、protected、默认、private
其他修饰符
static、abstract(抽象)、final
可以修饰以下内容的:
类(比成员变量多两种)
public、默认、abstract、final
成员变量(除了abstract不能修饰,其他的六种都可以修饰)
public、protected、默认、private
static、final
局部变量(只有两种)
默认、final
成员方法(都可以修饰)
public、protected、默认、private
static、abstract、final
构造方法(只有权限修饰符可以修饰)
public、protected、默认、private
内部类
类中的组成部分
成员变量(常量)
成员方法(包括getters方法和setters方法)
构造方法(无参构造方法、有参构造方法)
代码块(静态代码块、构造代码块)
内部类(接口、枚举)
分类:
成员内部类
位置:类中方法外
局部内部类
位置:方法中
匿名内部类(掌握)
位置:方法中
成员内部类
特点:
在类中方法外定义的,和成员变量以及成员方法定义的位置相同
成员内部类可以直接使用外部类的成员,包括私有的
创建对象
格式:
外部类名.内部类名 对象名 = new 外部类名().new 内部类名();
例如:
Outer.Inner i = new Outer().new Inner();
成员内部类的修饰符
public、protected、默认、private
static、abstract、final
private修饰
只能在本类中使用,其他类中不能使用
static修饰
调用方法
非静态方法
外部类名.内部类名 对象名 = new 外部类名.内部类名();
对象名.方法名();
例如:
Outer2.Inner2 i = new Outer2.Inner2();
i.function(); // 此处function()方法是非静态方法
静态方法
外部类名.内部类名.方法名();
例如:
Outer2.Inner2.function(); // 此处function()方法是静态方法
局部内部类
特点:
定义在方法中,出了所在的方法就不可用
必须先定义局部内部类,再使用
使用:
只能在局部内部类所在的方法中创建该局部内部类的对象,然后再调用该局部内部类中的方法
匿名内部类
特点:
定义在方法中的
本质上可以看做是一个每一名字的局部内部类
会创建匿名内部类的对象
创建匿名内部类对象的格式
new 接口()或父类(参数){
};
匿名内部类对象的本质是创建该父类的子类对象,或者该接口的实现类对象
应用场景
作为实际参数进行传递