理解Java中的包:作用和概念简介
最编程
2024-08-02 12:24:52
...
具体:包的作用、package、import、系统常见包、四种权限的关系
包的作用:可以将程序中的类分别独立出来,并自动开设文件夹,然后可以这些文件一起编译。
包的定义: package 包名称.子包名称;(包名称也就是能开设的文件夹的名称,自动完成)
在进行编译的时候,需要写成: javac -d . XXX.java
在进行执行的时候,需要写成: java 包名称.子包名称.XXX
imoprt:能够将一个包文件导入另一个程序
需要在头文件上一行加上:import 包名称.子包名称.类名称;
或:import 包名称.子包名称.*; (两种导入性能是一样的)
若要导入的类能够关联,必须由public定义,否则无法被外包访问,且一个外包可以同时访问多个不同的包。
访问控制权限:public(+++ 其他包的类)>protected(++ 不同包的类)>default(+ 同一包的类)>private(只能在同一类)
例:将宠物商店拆分为几个包
package petshop.cc.Pet; //包的定义
public interface Pet{ //将接口定义为一个包
public String getName();
public String getColor();
public int getAge();
}
package petshop.cc.Cat; //定义一个包
import petshop.cc.Pet.*; //将接口包导入
public class Cat implements Pet{ // 猫是宠物,实现接口
private String name ; // 宠物名字
private String color ; // 宠物颜色
private int age ; // 宠物年龄
public Cat(String name,String color,int age){
this.setName(name) ;
this.setColor(color) ;
this.setAge(age) ;
}
public void setName(String name){
this.name = name ;
}
public void setColor(String color){
this.color = color;
}
public void setAge(int age){
this.age = age ;
}
public String getName(){
return this.name ;
}
public String getColor(){
return this.color ;
}
public int getAge(){
return this.age ;
} //setter和getter方法
};
package petshop.cc.Cat; //定义一个包
import petshop.cc.Pet.*; //将接口导入
public class Cat implements Pet{ // 猫是宠物,实现接口
private String name ; // 宠物名字
private String color ; // 宠物颜色
private int age ; // 宠物年龄
public Cat(String name,String color,int age){
this.setName(name) ;
this.setColor(color) ;
this.setAge(age) ;
}
public void setName(String name){
this.name = name ;
}
public void setColor(String color){
this.color = color;
}
public void setAge(int age){
this.age = age ;
}
public String getName(){
return this.name ;
}
public String getColor(){
return this.color ;
}
public int getAge(){
return this.age ;
}
};
package petshop.cc.search; //定义一个包
import petshop.cc.Pet.*; //导入接口
public class PetShop{ // 宠物商店
private Pet[] pets ; // 保存一组宠物
private int foot ;
public PetShop(int len){
if(len>0){
this.pets = new Pet[len] ; // 开辟数组大小
}else{
this.pets = new Pet[1] ; // 至少开辟一个空间
}
}
public boolean add(Pet pet){ // 增加的是一个宠物
if(this.foot<this.pets.length){
this.pets[this.foot] = pet ; // 增加宠物
this.foot ++ ;
return true ;
}else{
return false ;
}
}
public Pet[] search(String keyWord){
// 应该确定有多少个宠物符合要求
Pet p[] = null ;
int count = 0 ; // 记录下会有多少个宠物符合查询结果
for(int i=0;i<this.pets.length;i++){
if(this.pets[i]!=null){ // 表示此位置有宠物
if(this.pets[i].getName().indexOf(keyWord)!=-1
||this.pets[i].getColor().indexOf(keyWord)!=-1){
count++ ; // 修改查找到的记录数
}
package petshop.cc.petshop; //定义一个包
import petshop.cc.Pet.*;
import petshop.cc.Dog.*;
import petshop.cc.Cat.*;
import petshop.cc.search.*; //将上面所以的包导入该主方法中
public class TestDemo{
public static void main(String args[]){
PetShop ps = new PetShop(5) ; // 五个宠物
ps.add(new Cat("白猫","白色的",2)) ; // 增加宠物,成功
ps.add(new Cat("黑猫","黑色的",3)) ; // 增加宠物,成功
ps.add(new Cat("花猫","花色的",3)) ; // 增加宠物,成功
ps.add(new Dog("拉步拉多","黄色的",3)) ; // 增加宠物,成功
ps.add(new Dog("金毛","金色的",2)) ; // 增加宠物,成功
ps.add(new Dog("黄狗","黑色的",2)) ; // 增加宠物,失败
print(ps.search("黑")) ;
}
public static void print(Pet p[]){
for(int i=0;i<p.length;i++){
if(p[i]!=null){
System.out.println(p[i].getName() + "," + p[i].getColor()
+"," + p[i].getAge()) ;
}
}
}
};
推荐阅读
-
理解JSP中的九大内置对象和Servlet中的Java对象
-
理解JSP中的九个内置对象和四个域对象及其作用域
-
深入理解Java Web开发:JSP的四大作用域和九个内置对象解析
-
理解Handle:SOC、Verilog和Verilog PLI中的关键概念笔记
-
理解2018年5月31日的3GPP中的Charging、Rating和Billing概念
-
理解数据库中的共享锁和排他锁的作用
-
理解MySQL/InnoDB中的乐观锁、悲观锁、共享锁、排他锁、行锁和表锁的概念,以及死锁的原理
-
使用cursor方式在MySQL中读取数据:理解useCursorFetch和FetchSize参数的作用
-
理解堆栈中ss、bp和sp的作用
-
理解Java中的long和Long类的差异