/* 包: java中的包就相当于windows文件夹。 包的作用: 1. 解决类名重复产生冲突的问题。 2. 便于软件版本的发布。 定义包的格式: package 包名; 包名命名规范:包名全部小写。 包语句要注意的事项: 1. package语句必须位于java文件中中第一个语句。 2. 如果一个类加上了包语句,那么该类的完整类名就是: 包名.类名 3. 一个java文件只能有一个包语句。 问题: 每次编译的时候都需要自己创建一个文件夹,把对应的class文件存储到文件夹中。烦!!! javac -d 指定类文件的存放路径 java源文件 */ package aa; class Demo1 { public static void main(String[] args) { System.out.println("这个是Demo1的main方法..."); } }
package bb; class Demo1 { public static void main(String[] args) { System.out.println("这个是Demo2main方法.."); } }
/* 有了包之后类与类之间的访问: 问题: 有了包之后类与类之间的访问每次都必须要写上包名!烦!!!! 解决方案: sunc提供导包语句让我们解决该问题。 导包语句作用:简化书写。 (误区: 把一个类导入到内存中) 导包语句的格式: import 包名.类名; (导入xxx包中某个类) 导包语句要注意的细节: 1. 一个java文件中可以出现多句导包语句。 2. "*"是 导包语句的通配符。可以匹配任何的类名。不能匹配包名 3. import aa.*; 是不会作用于aa包下面的子包的。 推荐使用:import 包名.类名; 因为使用*通配符会导致结构不清晰。不知道哪个类属于哪个包的 什么时候使用import语句: 1. 相互访问的两个类不是在同一个包下面,这时候就需要使用到导包语句。 2. java.lang 是默认导入的,不需要我们自己导入。 */ package aa; public class Demo3 { /* static{ System.out.println("这个是Dmeo3的静态代码块..."); } */ public void print(){ System.out.println("这个是Dmeo3的print方法..."); } }
package bb; import aa.Demo3; import java.util.Arrays; class Demo4 { public static void main(String[] args) { int[] arr = {1,234,2}; Arrays.sort(arr); Object o = new Object(); Demo3 d = new Demo3(); d.print(); /* Demo5 d2 = new Demo5(); d2.test(); */ } }
package aa; public class Demo5{ static{ System.out.println("这个是Dmeo5的静态代码块..."); //import包的时候并不会执行 } public void test(){ System.out.println("这个是Demo5的test方法..."); } }
/* 权限修饰符: 权限修饰符就是控制被修饰的成员的范围可见性。 public(公共) protected(受保护) default(缺省) private (大到小) 同一个类 true true true true 同一个包 true true true false 子父类 true true false false 不同包 true false false false 注意: 在不同包下面只有public 与 protected 可以访问,而且protected必须是在继承关系下才能够访问。 在同一个包下,只有private权限修饰的不能访问 */ package aa; public class Demo7 { protected int i =10; }
package bb; import aa.Demo7; class Demo8{ public static void main(String[] args){ Demo7 d = new Demo7(); System.out.println("i="+d.i); } }
时间: 2024-10-08 03:38:18