package关键字的作用和注意事项
为什么要有包?
将字节码文件进行分类存放
定义包
- package 包名
- 多级包使用·分隔
import关键字
如果我们要使用其他包的类,需要使用import导入,从而可以在本类中直接通过类名来调用,否则就需要书写类的完整包名和类名。import后,便于编写代码,提高可维护性。
注意要点:
1. Java会默认导入java.lang包下所有的类,因此这些类我们可以直接使用。
2. 如果导入两个同名的类,只能用包名+类名来显示调用相关类:
1 |
|
import 关键字的有种导入方式
import java.sql.Date; // 推荐使用这种
import java.util.*;//导入该包下所有的类。会降低编译速度,但不会降低运行速度。
什么是内部类?
一个类放在另一个类的内部定义,称为内部类(innerclasses)。
特点及作用
- 内部类可以使用public、default、protected 、private以及static修饰。
- 而外部顶级类(我们以前接触的类)只能使用public和default修饰。
- 内部类是相对独立的一种存在,其成员变量/方法名可以和外部类的相同。
- 内部类提供了更好的封装。只能让外部类直接访问,不允许同一个包中的其他类直接访问。
- 内部类可以直接访问外部类的私有属性,内部类被当成其外部类的成员。 但外部类不能访问内部类的内部属性。
- 接口只是解决了多重继承的部分问题,而内部类使得多重继承的解决方案变得更加完整。
- 只为外部类提供服务的情况下可以优先考虑使用内部类。
- 使用内部类间接实现多继承:每个内部类都能独立地继承一个类或者实现某些接口,所以无论外部类是否已经继承了某个类或者实现了某些接口,对于内部类没有任何影响。
如何访问内部类对象的属性和方法?
要先创建对象才能访问。格式为
Outer.Inter I = new Outer().new Inter();// 外部类名.内部类名 = 外部类对象.内部类对象
package com.company;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Outer.Inter I = new Outer().new Inter(); // 创建对象 ,访问内部类的属性和方法
I.run();
Outer O = new Outer(); // 创建外部类对象,
O.demo();// 调用共用方法
}
}
class Outer {
int age = 20;
class Inter {
private int a = 18;
public void run() {
System.out.println("我是内部类里的方法");
System.out.println(age); // 内部类可以直接使用外部类的属性
}
}
public void demo() { // 创建一个公有的方法,在里面创建内部类的对象,让其访问自己的私有属性
Inter I = new Inter();
System.out.println(I.a);
}
}
0---------------------------------
我是内部类里的方法
20
18
局部内部类:
推荐去下面的博客详细了解
http://www.sxt.cn/Java_jQuery_in_action/five-classification.html