封装作为面向对象三大特性(封装,继承,多态)之一,那如何实现封装性的呢?就又得拿出上面的访问修饰限定符的图
public: 就是在任何地方都可以访问
protected: 涉及子类在介绍继承时详细介绍
default: 什么都不写时默认权限,在当前包下面访问
protected: 在当前类中可以访问。
包就像我们创建的文件夹一样,里面包含多种类。跟c语言的头文件差不多。
那在C语言中我们要导入头文件,自然在Java中使用Java自带的类也要导包(这种意义上导包就是要写到类),使用
关键字import导包,如下:
import java.util.Date;
public class Test {
public static void main(String[] args) {
Date date = new Date();// 得到一个毫秒级别的时间戳
System.out.println(date.getTime());
}
}
当我们需要使用该包下的其他类时Java中有一个简便写法,
import java.util.*;
但是如此写就会在有些情况下出先bug,例如
util 和 sql 中都存在一个 Date 这样的类, 此时就会出现歧义, 编译就会出错
所以这种导包不建议。
在这种情况下要解决就需要将包在程序写上
java.util.Date date = new java.util.Date();
这不是多此一举吗。
包名采用小驼峰(首单词首字母小写,其余单词首字母大写)
1.鼠标右击文件
2.左击new
3.左击package
成员变量/方法被static修饰就是静态成员变量/方法,
这样的成员是所有对象共用的
class Student{
private String name = "zhangsan";
public static fun(){
Student student = new Student();
student.name = "lisi";
}
}
在这一个类中实例化任何对象时,每个对象都一样的成员变量/方法就可以用static来修饰,例如要对一个班级中的同学写成绩管理系统,那他们的班级就是一样的就可以用static修饰。
public static className = "一班";
代码块(用{}括起来的代码都是代码块)有很多种,在这就先介绍两种。
定义形式很简单,定义在类内,成员方法外,如下
static {
//代码
}
1.它一般用于初始化静态成员变量。
2.只要类加载就会调用执行,且执行一次。
3.如果有多个静态代码块且里面对同一变量进行了操作,就以最后一个为准。例如:
class Student{
private String className = "一班";
static{
className = "二班";
}
}
//这种结果就是二班
class Student{
static{
className = "二班";
}
private String className = "一班";
}
//这种结果就是一班
也叫非静态代码块,还叫实例代码块。定义在类内,成员方法外。
class Student{
private String name;
private String className = "一班";
static{
className = "二班";
}
{
name = "zhangsan";
}
}
特性:
1.一般用来初始化非静态成员变量
2.只要实例化对象就会调用执行。
3.如果有多个静态代码块且里面对同一变量进行了操作,就以最后一个为准。
先执行静态代码块且只执行一次,
在执行构造代码块,
最后执行构造方法。
那就是static静态的东西不依赖对象,它的调用就直接用类,
在静态中要想调用非静态的就必须要实例化对象来通过对象调用。