对于封装而言,一个对象它所封装的是自己的属性和方法,所以它是不需要依赖其他对象就可以完成自己的操作。
什么是封装?
封装就是将属性私有化,提供公有的方法访问私有属性。
做法就是:修改属性的可见性来限制对属性的访问,并为每个属性创建一对取值(getter)方法和赋值(setter)方法,用于对这些属性的访问。如:
private String name;
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
static的关键字的用法:
static关键字:static变量是该类的所有对象所共有的,静态变量既能被对象调用,也能直接拿类来调用。所有实例的引用都指向同一个地方,任何一个实例对其的修改都会导致其他实例的变化。
public class User {
private static int userNumber = 0 ;
public User(){
userNumber ++;
}
public static void main(String[] args) {
User user1 = new User();
User user2 = new User();
System.out.println("user1 userNumber:" + User.userNumber);
System.out.println("user2 userNumber:" + User.userNumber);
}
}
------------
Output:
user1 userNumber:2
user2 userNumber:2
static静态的、类加载的时候
先于对象存在
static修饰代码块,在类加载的时候执行一次,加载配置文件、获取系统配置参数(初始化)
public class extend {
/**
* 计数器,用于记录学生的数量
*/
private static int count = 170000;
private int age;
private String number;
/**
* 静态代码块:在类加载的时候执行
*/
static {
System.out.println("在类加载之前执行!");
}
/**
* 无参构造方法
*/
public extend() {
count++;
number = "j" + count;
}
/**
* 有参构造方法
* @param age
*/
public extend(int age) {
this();
this.age = age;
}
@Override
public String toString() {
return "extend{" +
"age=" + age +
", number='" + number + '\'' +
'}';
}
public static void main(String[] args) {
extend extend = new extend(22);
extend extend02 = new extend(22);
System.out.println(extend);
System.out.println(extend02);
}
public int getAge() {
return age;
}
public void setAge(int age) {
if (age < 7 || age > 60){
System.out.println("年龄非法");
}
this.age = age;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
}