包
包的三大作用:
- 区分相同名字的类(就是可以在不同包中写相同名字的类)
- 当类很多时,可以很好的管理
- 控制访问范围
包基本语法:
package 包名
例如:package com.haikang.类名
说明:
package
关键字,表示打包com.haikang
:表示包名
包的本质分析(原理)
包的本质,实际上就是创建不同的文件夹,目录来保存类文件
示意图
注意:当一个类中引入两个相同名字的类时,一个会带上包名,作为区分
如下图,当在Test
类中引入两个Dog类时,一个带上包名,一个不包,作为区分
包的命名
1.命名规则
只能包含数字,字母,下划线,小圆点,但不能用数字开头,不能关键字或保留字
例如:
demo.class.exercise //错误有class关键字
demo.12a //错误有12是数字开头
demo.a12.oa //正解
2.命名规范
一般是小写字母+小圆点,一般是com.公司名.项目名.业务模块名
例如:
com.haikang.ao.model;
com.haikang.ao.controller;
举例:
com.haikang.crm.user //用户模块
com.haikang.crm.order //订单模块
com.haikang.crm.utils //工具类
如何引入包
语法:import 包名;
比如:
import java.util.Scaner; //就是只引入一个类Scanner
import java.util.*; //表示将java.util包所有类都引入
包使用的注意事项和使用细节
package
的作用是声明当前类所在的包,需要放在类的最上面,一个类中最多只有一句package
语句import
语句位置放在package
的下面,在类定义上,可以有多句且没有顺序的要求
package JAVA面向对象中级部分.myImport;
//package的作用是声明当前类所在的包,需要放在类的最上面(也就是第一名),一个类中最多只有一句package
//import java.util.Scanner; //表示只会引入java.util包下的Scanner类
//import java.util.*; //表示引入java.util包下的所有类
import java.util.Arrays;
//import语句,位置放在package的下面,在类定义前面,可以有多句且没有顺序要求
//意思是import语句是放在package语句和类定义之间并且多个import语句没有顺序要求
//下面就是类定义
public class myPackage {
public static void main(String[] args) {
//使用系统提供的Array完成数组排序
int[] arr = {11,22,33,43,5,66,7,86,99,168};
Arrays.sort(arr);
for (int i=0;i<arr.length;i++){
System.out.print(arr[i]+"\t");
}
}
}
访问修饰符
基本介绍:在JAVA中提供四种访问控制修饰符号,用于控制类,方法和属性(全局变量,注意局部变量是不能使用访问修饰符的)
- 公开级别:
public
修饰,对外公开 - 受保护级别用:
protected
修饰,对子类和同一个包中的类公开 - 默认级别:没有修饰符号,,向同一个包的类公开
- 私有级别:
private
修饰,只有类本身可以访问,不对外公开
使用的注意事项(记住)
- 修饰符可以用来修饰类中的全局变量,成员方法及类(注意是不能修饰方法中的局部变量)
- 成员方法的访问规则和属性完全一样
- 只有默认的和
public
才能修饰类,并且遵循上述访问的权限的特点
package JAVA面向对象中级部分.modifier;
public class myModifier {
//四个属性,分别使用不同的访问修饰符来修饰
public int num1 = 100;
protected int num2 = 200;
int num3 = 300;
private int num4 = 400;
public void print(){
/**
* 说明在同一类中,可以访问public protected 默认 private 修饰属性和方法
*/
System.out.println("num1="+num1);
System.out.println("num2="+num2);
System.out.println("num3="+num3);
System.out.println("num4="+num4);
}
}
package JAVA面向对象中级部分.modifier;
public class Modifier02 {
public void say(){
myModifier myModifier = new myModifier();
//说明在同一个包下,可以访问public protected 默认修饰的属性,不能访问privat修饰的属性或方法
//private说明只能在本类中访问
System.out.println("在Modified中访问myModifier中的num1="+myModifier.num1);
System.out.println("在Modified中访问myModifier中的num2="+myModifier.num2);
System.out.println("在Modified中访问myModifier中的num3="+myModifier.num3);
}
}
package JAVA面向对象中级部分.myImport;
public calss Test{
public static void main(String[] args){
myModifier myModifier = new myModifier();
//在不同包下,可以访问public修饰的属性或方法
//但是不能访问protected 默认 private修饰的属性或方法
System.out.println(myModifier.num1);
}
}
注意:(记下)
- 访问修饰符修饰类时(只能用默认和
public
修饰),成员方法(包括构造器,构造器本质就是一种特殊的方法),全局变量(注意不能修饰成员方法中局部变量) - 访问修饰符作用在方法和属性(全局变量)的作用一样
- 访问修饰符作用在类,只能是默认和
public