访问限定符
Java中主要通过类和访问权限来实现封装:类可以将数据以及封装数据的方法结合在一起,更符合人类对事物的认知,而访问权限用来控制方法或者字段能否直接在类外使用。Java中提供了四种访问限定符:
java提供了四个访问操作符:
protected 受保护的
private 私有的,只能在当前类中访问
public 公开的
class Demo{
public int a;
protected char b;
private double c;
String d; //默认的;包访问权限
}
当我们在类中成员变量没加访问修饰符时,我们就默认为包访问权限。
我们先学习包的概念
在面向对象体系中,提出了一个软件包的概念,即:为了更好的管理类,把多个类收集在一起成为一组,称为软件包。有点类似于目录。比如:为了更好的管理电脑中的歌曲,一种好的方式就是将相同属性的歌曲放在相同文件下,也可以对某个文件夹下的音乐进行更详细的分类。
在Java中也引入了包,包是对类、接口等的封装机制的体现,是一种对类或者接口等的很好的组织方式,比如:一个包中的类不想被其他包中的类使用。包还有一个重要的作用:在同一个工程中允许存在相同名称的类,只要处在不同的包中即可。
java 中已经提供了很多现成的类供我们使用. 例如Date类:可以使用 java.util.Date 导入 java.util 这个包中的 Date类.
import java.util.Arrays;
public class TextDemo1 {
public static void main(String[] args) {
int[] arrays = {1,2,3};
System.out.println(Arrays.toString(arrays));
}
我们通常用import语句导入包
我们也可以不导入包也可以,但是比较麻烦
public static void main(String[] args) {
java.util.Date date =new java.util.Date();
//得到一个毫秒级别的时间戳;
System.out.println(date.getTime());
}
我们还可以使用import.java.util.*
import java.sql.Date;
import java.util.*;
public static void main(String[] args) {
int[] arrays = {1,2,3,4,5,6};
System.out.println(Arrays.toString(arrays));
java.util.Date dat = new java.util.Date();
}
我们的util里面有Date这个方法,但是我们的sql里面也有,这个时候我们就需要具体往里面导入。
同时我们java还支持一种静态导入。
import static java.lang.Math.*;
public static void main(String[] args) {
double x = 30;
double y = 40;
//静态导入的方法写起来更加方便
//double result = Math.sqrt(Math.pow(x,2)+Math.pow(y,2));
double result = sqrt(pow(x,2)+pow(y,2));
System.out.println(result);
}
这个方法不建议使用,能看懂就行。
我们知道了怎么导包,但是我们还得要学习怎么自己写包。
自定义包
在文件的最上方加上一个 package 语句指定该代码在哪个包中.
包名需要尽量指定成唯一的名字, 通常会用公司的域名的颠倒形式(例如 com.bit.demo1 ).
包名要和代码路径相匹配. 例如创建 com.bit.demo1 的包, 那么会存在一个对应的路径 com/bit/demo1 来存储代码.
如果一个类没有 package 语句, 则该类被放到一个默认包中.
当我们创建出来的时候,就会出现
package com.bit.demo;
package代表声明报的路径
所以这个包就在com.bit.demo
我们再回到之前的问题,包访问权限到底是什么?
public是在哪都能访问
默认包访问权限,->只能在包中访问。
private ->只能在当前类中使用。
我们的封装就是运用这几个访问修饰符来实现。什么时候使用public 什么时候使用private
并没有强制规定,这个东西适合你业务上有关系的。