封装
1.封装的基本知识
1.1 什么是封装
首先上面代码定义了一个Date
类,类中有三个成员变量year
、month
、day
和一个printDate
成员方法,通过main
函数实例化了一个date1
对象,date1.
分别访问了变量和方法,输出了2024年9月7日。
但如果将成员变量year
的访问限定符public
改为private
,则date1
对象就不能访问year
成员变量,也无法给year
赋值。
编译器报错,且提示year 在 Date 中是 private
访问控制,这个行为就叫对year
成员变量的封装,意思就是隐藏date1
对象中year的属性,仅能在自己的类中使用,别的类不能直接访问。
当然,可以对类的成员变量封装,也可以对类的成员方法封装,同理将对方法的访问限定符改为private
即可。
那么要是想在别的类中访问year
成员变量,就可以在Date
类中设置一个对外公开访问的接口,来实现对象的交互,进而访问year
。
我们在Date
类中设置了setYear
和getYear
两个方法,用来设置year
的值和获取year
,这样在右边Test
类中就可以访问setYear
进行赋值,用getYear
方法获取year
的值,这样就能继续打印出2024年9月7日。
1.2 为什么要封装
封装就是为了将内部的实现细节隐藏起来,不对外公开,在自己的类当中访问,仅提供对外公开的接口进行交互,以提高代码的安全性。
2. static
2.1 static有什么用
上面代码可以看出,定义学生类,实例化了三个学生对象,但是当他们上课的教室在一起时,给三个学生的教室分别赋值,显得有些冗杂和繁琐。在java中,static
关键字,可以修饰类的成员变量,将这个成员变量变为所有对象共享。
2.2 ststic修饰成员变量和方法
被static
修饰的变量,称为静态成员或类成员,它不属于某个具体的对象,而是被所有对象共享。
它可以使用类名.
来访问,也可以使用对象名.
来访问,但更推荐类名访问
修饰成员方法时同理,给成员方法前加上static
。
public static String getClassRoom(){
被static
修饰的方法,称为静态成员方法,是整个类的方法,不是某个对象特有,并且不能在静态方法中访问非静成员变量。