包(package)
包-->文件夹
包的作用:
-
避免类重名 包名(类的地址)+类名 == 全类名(唯一的地址名称)
-
按照不同的功能管理类
按照天数管理类名: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();
}
}