一、前言

在程序的设计中,我们普遍的定义一个private变量,然后为这个变量加上get() 、set()方法,那为何不直接定义一个public变量呢?

很多人是这样回答的:

1、关系到安全性的问题,貌似具有说服力,使用pubilc变量有何不安全呢?使用get()和set()安全在哪里呢?(假如你开发一个类给别人用,人家只要输入.get就能知道所有的属性。)

2、有些人说封装性,但是变量本身就是封装在类里面的呀!

其实大部分人都是人云亦云,说什么安全性和封装性,只要学java的人都知道这些名词。

我的理解它的更多的作用是数据输入输出的控制。

二、get()和set()作用

(1)、安全性

程者可以选择只读或者只写 或者读写都行。

public class Circle {
private double radius; private double pai = 3.14; public double getPai() {
return pai;
} public void setRadius(double radius) {
this.radius = radius;
} /**
* 计算周长
*/
public double getC() {
return 2*pai*radius;
}
}

定义了一个圆类,定义了属性半径和pai,半径只提供写的方法,但不提供读,而pai只提供读,但不能写,并提供了一个计算周长的方法getC。在实际项目中,对一些类的设计时,严谨的设计是要考虑哪些类是只读或是只写的。

(2)、灵活性

如在定义一个Person类时,设置一个属性name,当取名字的时候,不只是显示名字,代码如下:

public class Person {
private String name; public String getName() {
return "我的名字叫" + name;
} public void setName(String name) {
this.name = name;
}
}

(3)、封装性

(4)、健壮性

其实java中对外提供访问方式,就是因为可以在访问方式中加入逻辑判断等语句,对访问的数据进行操作。提高代码的健壮性。

简单小栗子:

class Person
{
private int age;
public void setAge(int a)
{
if(a>0 && a<130)
{
age = a;
speak();
}
else
System.out.println("feifa age");
} public int getAge()
{
return age;
}
private void speak()
{
System.out.println("age="+age);
}
} class PersonDemo
{
public static void main(String[] args)
{
Person p = new Person(); //p.age = -20;
p.setAge(-40);
//p.speak();
}
}

总结

更多的用法只能在使用中多体会了。

Java中get()和set()作用的更多相关文章

  1. 自己(转)JAVA中toString方法的作用

    JAVA中toString方法的作用 因为它是Object里面已经有了的方法,而所有类都是继承Object,所以“所有对象都有这个方法”. 它通常只是为了方便输出,比如System.out.print ...

  2. 【Java_基础】Java中Native关键字的作用

    本篇博文转载与:Java中Native关键字的作用

  3. java中关键字volatile的作用

    用在多线程,同步变量. 线程为了提高效率,将某成员变量(如A)拷贝了一份(如B),线程中对A的访问其实访问的是B.只在某些动作时才进行A和B的同步.因此存在A和B不一致的情况.volatile就是用来 ...

  4. Java中Native关键字的作用

    初次遇见 native是在 java.lang.Object 源码中的一个hashCode方法: 1 public native int hashCode(); 为什么有个native呢?这是我所要学 ...

  5. java中的hashcode方法作用以及内存泄漏问题

    本文装载:http://hi.baidu.com/iduany/item/6d66dfc9d5f2da1650505870 hashCode()方法的作用&使用分析 一直以来都想写篇文章来说明 ...

  6. java中static关键字的作用

    java中static关键字主要有两种作用: 第一:为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关. 第二,实现某个方法或属性与类而不是对象关联在一起 简单来说,在Java语言中,s ...

  7. java中final 关键字的作用

    final 关键字的作用 java中的final关键字可以用来声明成员变量.本地变量.类.方法,并且经常和static一起使用声明常量. final关键字的含义: final在Java中是一个保留的关 ...

  8. return在Java中的两个作用

    Java中return的两个作用:   (1)返回方法指定类型的值(这个值总是确定的),也可以是对象   (2)方法的结束

  9. Java中volatile关键字及其作用是什么?

    在 Java 多线程中如何保证线程的安全性?那我们可以使用 Synchronized 同步锁来给需要多个线程访问的代码块加锁以保证线程安全性.使用 synchronized 虽然可以解决多线程安全问题 ...

随机推荐

  1. java 常用时间操作类,计算到期提醒,N年后,N月后的日期

    package com.zjjerp.tool; import java.text.ParseException; import java.text.ParsePosition; import jav ...

  2. Sentinel滑动窗口算法

    在前面搞清楚了Sentinel的使用后,大致理了一下Sentinel的责任链,搞清楚了这个,基本就已经梳理清楚sentinel-core模块的大部分内容,顺着这条链路可以继续梳理很多东西. 知其然.知 ...

  3. [LeetCode]Subtree of Another Tree判断一棵树是不是另一棵树的子树

    将树序列化为字符串,空节点用符号表示,这样可以唯一的表示一棵树. 用list记录所有子树的序列化,和目标树比较. List<String> list = new ArrayList< ...

  4. Go-Zero 短链项目 DevOps 实战,利用 Drone CI/CD 打通上云(Kubernetes)迭代流程

    Go-Zero 官方短链项目教程:快速构建高并发微服务 关于 go-zero,大家可以看文档.为少认为它是中国目前最好用的 golang 微服务框架. 完整的 Go-Zero ShortUrl Dev ...

  5. 这是一篇SQL注入文章

    目录 注入原理: 1.寻找注入点的方式或注入的地方可能包括. 2.注入点判断方法. 3.注入分类. 数字型: 字符型: 搜索型: XX型(也叫其他型): 4.注入提交方式. 5.注入攻击类型与方式. ...

  6. reactor模式前序:传统IO的WEB服务器设计

    先看一段经典的WEB JAVA服务器设计 JAVA代码为(伪代码) 1 ServerSocket serverSocket = ...; 2 serverSocket.bind(8899); 3 4 ...

  7. 被自己以为的GZIP秀到了

    问题的开始 我司某产品线有这么一个神奇接口 (https://host/path/customQuery) 该接口在预发或线上缓存正常的情况下TTFB为150ms左右(可以认为服务处理时间差不多就是T ...

  8. TurtleBot3 Waffle (tx2版华夫)(12)建图-hector建图

    1)[Remote PC] 启动roscore $ roscore 2)[TurBot3] 启动turbot3 $ roslaunch turbot3_bringup minimal.launch 3 ...

  9. Codeforces Round #695 (Div. 2)

    比赛地址 A (水题) 题目链接 题目: 给出\(n\)个面板,每个面板初始时间相同,每过1s面板上数字会加1(数字在\(0\sim9\)循环播放),任意时刻选择一个面板\(x\)使他的时间停止,其他 ...

  10. 2018年第九届蓝桥杯B组(201803-----乘积尾零)

    标题题目:乘积尾零 如下的10行数据,每行有10个整数,请你求出它们的乘积的末尾有多少个零? 5650 4542 3554 473 946 4114 3871 9073 90 4329 2758 79 ...