package与import
在Java中每定义一个类,通过java编译器编译之后,都会生成一个扩展名为.class的文件,当这个程序的规模逐渐庞大时,就会出现类重名的现象。
包即是管理类的机制
如何定义包? 使用package关键字 package 包名; 包可以重叠,母包与子包之间用.隔开 package 包名1.包名2;
注意: 在类中指定包名时需要将package语句放置在程序第一行,必须是文件中的第一行非注释代码
包的命名规则: 都由小写字母组成
带包程序的编译和运行:
package exaggerate; public class demo{ public static void main(String[] args){ System.out.println("Welcome to Java"); } }
在cmd中:
( - d . 为在当前目录下)
运行第一行代码,会生成一个文件夹(即包)
再运行第二行即可
(带包的java 按正常方法无法运行)
如何引入包? 使用 import
两种包的导入机制:
单类型导入: 如:import exaggerate.Person; import 包名.类名; // 提高速度,避免冲突
按需类型导入: 如: import exaggerate.*; // *为通配符 告诉编译器,对于未知类可以去此包中查找,此方法会影响代码编译速度
包的用途: 归类整理,允许类重名
访问控制修饰符
java提供的访问控制修饰符,可以给类库开发人员向客户端程序员指明那些是可用的,那些是不可用的
访问控制等级: public>protected>default>private
Java类的种类 :外部类 //只能使用public,default
内部类 //都可以
修饰类:
public | protected | default | private | |
同类 | √ | √ | √ | √ |
同包不同类 | √ | √ | √ | × |
不同包 | √ | × | × | × |
而protected与default之间的区别在继承上
修饰类成员
public |
protected | default | private | |
同一类内 | √ | √ | √ | √ |
同包不同类 | √ | √ | √ | × |
不同包 | √ | × | × | × |
子类(不同包) | √ | √ | × | × |
static 关键字
静态成员: 使用static可以修饰成员变量,常量,方法和代码块
静态成员是全局的,归整个类所有,不依赖特定对象,是被所有类的对象所共享的
只要被虚拟机加载,就可以根据类名在全局数据域内找到他们
访问格式: 类名.静态成员
静态变量,也称为静态成员变量,是指被static关键字修饰的成员变量。生命周期和类生命周期一致,被类的所有对象共享
示例:
public class sellTickets { String name; int tickets=10; //非静态 sellTickets(String name){ this.name=name; } void selling() { while(tickets>0) { tickets--; System.out.println(name+"剩余票数: "+tickets); } } public static void main(String[] args) { sellTickets demo1 =new sellTickets("第一台"); sellTickets demo2 =new sellTickets("第二台"); demo1.selling(); demo2.selling(); } }
运行结果:
public class sellTickets { String name; static int tickets=10; //静态 sellTickets(String name){ this.name=name; } void selling() { while(tickets>0) { tickets--; System.out.println(name+"剩余票数: "+tickets); } } public static void main(String[] args) { sellTickets demo1 =new sellTickets("第一台"); sellTickets demo2 =new sellTickets("第二台"); demo1.selling(); demo2.selling(); } }
运行结果:
可见tickets被共享
静态方法同理
非静态方法中可以进行静态方法的调用,反之不可
累死窝啦
To Be Continued··········