1.1:包的介绍
概念:
- 包是用来分类管理类文件的。
- 包相当于文件夹,类相当于文件。
- 是封装的一种表现形式。
作用:
- 为类分类。
- 提供多层命名空间。
- 类名的全限定名是包括其所属包的
包的定义:
- 定义包时写在程序文件的第一行。
- 通常使用公司的域名反写。
- 格式:package 一级包名.二级包名…;
带包的编译:
- 直接编译,手动创建文件夹。
- 使用带参数的命令进行编译。
- javac –d . XX.java后加入包名运行即可
- 带包的运行:运行全限定名类。
- 同包访问:直接访问
- 跨包访问
- 使用全限定名。
- 除lang包外,其它包下的类需要导包后才能使用
- import关键字用来导包。
- 格式:import 全限定类名称;/ import mypack.*;
- 同一文件中可以导入多个包。
- 被导入的类需要使用public修饰。
- 通常一个文件中只定义一个类,而这个类就是使用public修饰的。
- 如果一个文件中定义多个类,则只有一个类可以使用public修饰,且这个类的类名需要与文件名相同。
包的访问权限
public | protected | default | private | |
同一类中 | √ | √ | √ | √ |
同一包中(子类与无关类) | √ | √ | √ | |
不同包的子类 | √ | √ | ||
不同包中的无关类 | √ |
1.2:内部类
内部类简介
概念:内部类又叫内置类或者嵌套类。即在类中定义的另外一个类。是一个相对概念。
- 内部类是符合面向对象的。如人与心脏的关系。
- 内部类在编译时,让会生成两个class文件。
- 访问特点:
- 内部类可以直接访问外部类中的成员,包括私有成员。
- 而外部类要访问内部类中的成员必须要建立内部类的对象。
分类:
- 成员内部类
- 局部内部类,
- 匿名内部类属于局部内部类
成员内部类
- 成员内部类:内部类定义在成员位置。
- 访问格式:
- Outer.Inner x = new Outer().new Inner();
- 或外部类中方法中,直接创建内部类对象调用其方法。
- 可以被private成员修饰符修饰,保证数据安全。
- 可以被static成员修饰符修饰,方便调用。
- static修饰后的访问格式:
- Outer.Inner x = new Outer.Inner();
- 被static修饰的内部类只能访问外部类中的静态成员。
- 调用静态内部类中的静态方法:
- Outer.Inner.method();
局部内部类
- 局部内部类:内部类定义在方法内。
- 无法使用Outer.Inner进行访问。
- 访问格式:在所在方法内创建对象进行方法调用
- 同时可以访问所在局部中的局部变量,但必须是被final修饰的。
- 必须先定义再使用。
匿名内部类
- 匿名内部类概念:
- 在通过简写形式定义一个没有类名的类。
- 在创建一个对象。
- 匿名内部类即将匿名定义类与创建对象的动作一起完成。
- 匿名内部类属于局部内部类。
- 定义格式:
- 匿名内部类需要先定义再使用。
- 匿名内部类是一种多态的表现形式。
- new 类名或者接口名(){覆盖类或者接口中的代码,(也可以自定义内容。)};
- 使用场景:
- 内部类效率更高。
- 通常在使用接口类型参数的方法上,并该接口中的方法不超过三个时,可以将匿名内部类作为参数传递。
- 增强阅读性。
(以上:就是包,接下来我们讲常用APL)