Java中get()和set()的方法使用
字面意思
set是设置的意思,而get是获取的意思,顾名思义,这两个方法是对数据进行设置和获取用的。而且,在类中使用set和get方法时,都是在set和get后面跟上一些特定的词来形成特定意思的方法名,比如setage()和getage(),表示设置年龄和获取年龄。
JAVA面向对象编程中的封闭性和安全性
封闭性即对类中的域变量进行封闭操作,即用private来修饰他们,如此一来其他类则不能对该变量访问。这样我们就将这些变量封闭在了类内部,这样就提高了数据的安全性。
当我们想要操作这些域变量怎么办呢?:
- 第一种即通过public方式的构造器(或称构造函数),对象一实例化就对该变量赋值。
- 第二种就是通过上面提到的set和get方法。
举一个特定的例子,定义一个Person类,该类中有name、age这两个私有域变量(private),然后我定义setname()、getname()、setage()、getage()这四个方法,通过这四个方法来实现对name和age的操作。
这样一来,我不用直接对Person类中的域变量操作,而是通过set和get方法间接地操作这些变量,这样就能提高域变量的安全性,同时又保证了域变量的封装型。
set和get的使用场景
set和get方法的使用场景,一般来说set和get方法都是对私有域变量进行操作的,所以大多数都是使用在包含特定属性的类实体中。 现在你明白set和get方法了吧,其实这两个方法只是类中的setxxx和getxxx方法的总称。
使用前提:当要访问被private封装的属性时
提供访问方式的原因: 之所以用private封装,又对外提供访问方式(set get),是因为可以在访问方式中加入逻辑判断等语句,对访问的数据进行操作,提高代码的健壮性。
例子
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片
.
// 计算图形面积
public class Shape{
public static double PI =3.14;
private int size;
public double s;
public double l;
public double r;
public void setSize(int size){ // 形参传入时,要使在size的基础上/1000
this.size = size/1000; //赋值给全局的size
}
public int getSize(){
return size;
}
//调用
public class Test{
public static void main(String[] args) {
//要调用Shape的方法
Shape s = new Shape();
s.setSize(5000); //传入参数
System.out.println(s.getSize()); //打印得到的size
补充:Java修饰符权限
访问包位置 | private | protected | public |
---|---|---|---|
本类 | 可见 | 可见 | 可见 |
同包其他类或子类 | 不可见 | 可见 | 可见 |
其他包的类或子类 | 不可见 | 不可见 | 可见 |
例:在项目中的com.lzw包下创建AnyClass类,该类使用默认的访问权限。
package com.lzw;
class AnyClass{
public void doString(){
....//方法体
}
}
在上述代码中,由于类的修饰符为默认修饰符,即只有一个包内的其他类和子类可以对该类进行访问,而AnyClass类中的doString()方法却又被设置为public访问权限,即使这样,doString()方法的访问权限依然与AnyClass类的访问权限相同,因为Java语言规定,类的权限设定会约束类成员的权限设定。所以上述代码等同于
package com.lzw;
class AnyClass{
void doString(){
....//方法体
}
}