欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

理解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()) ;
			}
		}
	}
};