包-->文件夹
包的作用:
避免类重名 包名(类的地址)+类名 == 全类名(唯一的地址名称)
按照不同的功能管理类
按照天数管理类名:day1,day2
项目中有很多类,有的是与数据库交互,有的是与前端交互
控制访问权限
/* import 类的地址 在一个类中使用另一个包中的类,需通过import关键字,将类和地址导入 */ import java.util.Date; //import java.sql.Date;不能导入相同的类名 //java.lang中的类不需要导入 public class Car { /* 全包名= 包名 + 类名的简称 */ public static void main(String[] args) { Date date = new Date(); java.sql.Date date1= new java.sql.Date(1);//如果需要导入相同的类名只能牺牲一个,写出类的全路径 } }
public 公共权限修饰符 修饰类,方法,属性
protected 保护权限修饰符 修饰属性,方法
default 默认权限修饰符 修饰类,属性,方法
private 私有权限修饰符 修饰属性,方法
package javaopp.Day03; public class Demo { public int pub; protected int pro; int def; private int pri; /* 被不同访问权限修饰符修饰的成员变量 */ public void pub() { } protected void pro() { } void def() { } private void pri() { } /* 在自己的类中,任何访问权限修饰符,修饰的成员变量都可以被访问 */ public static void main(String[] args) { Demo d = new Demo(); System.out.println(d.pub); d.pub(); System.out.println(d.pro); d.pro(); System.out.println(d.def); d.def(); System.out.println(d.pri); d.pri(); } }
同一个包中的不同类可以访问public default protected
package javaopp.Day03; public class Demo1 { /* 同一个包中的不同类中可以访问public default protected */ public static void main(String[] args) { Demo d = new Demo(); System.out.println(d.pub); d.pub(); System.out.println(d.def); d.def(); System.out.println(d.pro); d.pro(); /* 同一包中的不同类中不能访问private */ /*System.out.println(d.pri); d.pri();*/ } }
不同包的不同子类只能访问public
package javaopp.Day004; import javaopp.Day03.Demo; /* 不同包的不同子类只能访问public */ public class Demo2 { public static void main(String[] args) { Demo d = new Demo(); System.out.println(d.pub); d.pub(); } }
不同包的不同子类中可以访问父类中的受保护的成员
package javaopp.Day004; import javaopp.Day03.Demo; /* 不同包的不同子类中可以访问父类中的受保护的成员 使用extends继承 */ public class Demo3 extends Demo { public static void main(String[] args) { Demo3 d3 = new Demo3(); System.out.println(d3.pub); d3.pub(); System.out.println(d3.pro); d3.pro(); } }