包
什么是包?
包从电脑文件系统的角度来讲就是文件夹
从java的角度来讲,包是类的路径(或者说是地址)。
严格意思上的类名:全类名=包类+类的简称
Java中包的作用:
1、避免类的重名
2、按照不同功能管理类
3、可以控制访问权限
包(package)的命名规范
在包名中,可以使用 . 号来区分包的级别;包名在一般情况下都是小写的
第一级:指该项目的类别,如: com,org,gov等。
第二级:指项目所开发或者运行的公司名称,如: oracle,sun,huawei等。
第三级:值项目的名称,如: bcms,oa,era,cms等。
第四级:值该项目模块化的名称,如: bean,action,exception等。
import关键字是用来导入外部包的类
Java.lang包中的类在使用时是可以不用导入
访问权限修饰符
Java语言有四大权限修饰符,权限从大到小依次排布:
public > protected > default > private
public
公共权限修饰符,可以修饰类、属性、方法。
所修饰的是可以被任意类访问到的
protected
受保护的权限修饰符。 用来修饰属性、方法
所修饰的是可以被同包中的类访问到的,如果不是同包类的,则必须是该类的子类才可以被访问到。
default
同包权限的修饰符。 用来修饰类、属性、方法、
所修饰的只能被同包中的类访问到。
是默认的权限修饰符(意思也就是可以不用写的)
private
私有权限修饰符。 用来修饰属性、方法、内部类。
只能在本类中被访问到
同类访问
package com.functorone;
public class Demo {
public String pubName = "张三";
protected String proName = "李四";
String defName = "王五"; //default String defName = "王五";
private String priName = "马六";
public static void main(String[] args) {
Demo demo = new Demo();
System.out.println(demo.pubName); //公共权限修饰符(任何位置)
System.out.println(demo.proName); //受保护权限修饰符(同包,或者不同包的子类)
System.out.println(demo.defName); //同包权限修饰符(同包)
System.out.println(demo.priName); //私有权限修饰符(本类)
//在同包同类中都是可以被访问到的
}
}
同包不同类访问
package com.functorone;
public class Demo1 {
//同包不同类
public static void main(String[] args) {
Demo demo = new Demo();
System.out.println(demo.pubName); //公共权限修饰符(任何位置)
System.out.println(demo.proName); //受保护权限修饰符(同包,或者不同包的子类)
System.out.println(demo.defName); //同包权限修饰符(同包)
// System.out.println(demo.priName);//访问不到 //私有权限修饰符(本类)
}
}
不同包
package com.functortwo;
import com.functorone.Demo;
public class Demo2 {
//不同包
public static void main(String[] args) {
Demo demo = new Demo();
System.out.println(demo.pubName); //公共权限修饰符(任何位置)
// System.out.println(demo.proName); //受保护权限修饰符(同包,或者不同包的子类)
// System.out.println(demo.defName); //同包权限修饰符(同包)
// System.out.println(demo.priName); //私有权限修饰符(本类)
}
}
不同包但继承了Demo类
package com.functortwo;
import com.functorone.Demo;
public class Demo4 extends Demo {
//继承了Demo这个类
public static void main(String[] args) {
Demo demo = new Demo();
System.out.println(demo.pubName); //公共权限修饰符(任何位置)
// System.out.println(demo.proName); //受保护权限修饰符(同包,或者不同包的子类)
// System.out.println(demo.defName); //同包权限修饰符(同包)
// System.out.println(demo.priName); //私有权限修饰符(本类)
Demo4 demo4 = new Demo4();
System.out.println(demo4.proName);
//通过子类继承父类被protected所修饰的就可以被访问到
}
}