Java-面向对象-包、反射
·
java.lang:基本类,如String、Math、Object(默认导入)java.util:集合框架、日期、工具类java.io:输入输出相关类java.net:网络编程相关类
- 用户自定义包
可以自己创建包,讲类组织起来:
代码语言:javascript
AI代码解释
package myapp.utils;
public class Helper {
// 辅助方法
}
包的命名规则
- 通常以反的方式命名,如:
com.example.project - 使用小写字母
- 避免使用Java的保留字
注意:Java源文件的包名,一定要和文件的目录结构保持一致!!!
假设我写了一个类:
代码语言:javascript
AI代码解释
package com.example.utils;
public class Tool {
// 工具类
}
那么它的文件就必须放在下面目录结构中:
代码语言:javascript
AI代码解释
项目目录/
└── com/
└── example/
└── utils/
└── Tool.java
当javac Tool.java被编译后的字节码Tool.class也会被放在:
代码语言:javascript
AI代码解释
com/
└── example/
└── utils/
└── Tool.class
如果你把上面的 Tool.java 放在根目录下,而它的包名还是 com.example.utils,那么编译时就会报错:
代码语言:javascript
AI代码解释
Tool.java:1: 错误: 程序包 com.example.utils 不存在
package com.example.utils;
除非你自己用命令行指定好 classpath 和目录结构,但一般来说,目录结构必须与包名完全对应。
使用包(import)
- 导入单个类
代码语言:javascript
AI代码解释
import java.util.ArrayList;
- 导入整个包
代码语言:javascript
AI代码解释
import java.util.*;
- 无需导入的包
java.lang 包是默认导入的,比如 String, System, Math 等类可以直接使用。
如何创建和使用自定义的包
在 animals 包中加入一个接口(interface):
代码语言:javascript
AI代码解释
/* 文件名: Animal.java */
package animals;
interface Animal {
public void eat();
public void travel();
}
在同一个包中加入该接口的实现:
代码语言:javascript
AI代码解释
package animals;
/* 文件名 : MammalInt.java */
public class MammalInt implements Animal{
public void eat(){
System.out.println("Mammal eats");
}
public void travel(){
System.out.println("Mammal travels");
}
public int noOfLegs(){
return 0;
}
public static void main(String args[]){
MammalInt m = new MammalInt();
m.eat();
m.travel();
}
}
什么是反射?
反射是 Java 提供的一种机制,它允许程序在运行时查看和操作类的结构。
更多推荐



所有评论(0)