Java中get()和set()作用
一、前言
在程序的设计中,我们普遍的定义一个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()作用的更多相关文章
- 自己(转)JAVA中toString方法的作用
JAVA中toString方法的作用 因为它是Object里面已经有了的方法,而所有类都是继承Object,所以“所有对象都有这个方法”. 它通常只是为了方便输出,比如System.out.print ...
- 【Java_基础】Java中Native关键字的作用
本篇博文转载与:Java中Native关键字的作用
- java中关键字volatile的作用
用在多线程,同步变量. 线程为了提高效率,将某成员变量(如A)拷贝了一份(如B),线程中对A的访问其实访问的是B.只在某些动作时才进行A和B的同步.因此存在A和B不一致的情况.volatile就是用来 ...
- Java中Native关键字的作用
初次遇见 native是在 java.lang.Object 源码中的一个hashCode方法: 1 public native int hashCode(); 为什么有个native呢?这是我所要学 ...
- java中的hashcode方法作用以及内存泄漏问题
本文装载:http://hi.baidu.com/iduany/item/6d66dfc9d5f2da1650505870 hashCode()方法的作用&使用分析 一直以来都想写篇文章来说明 ...
- java中static关键字的作用
java中static关键字主要有两种作用: 第一:为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关. 第二,实现某个方法或属性与类而不是对象关联在一起 简单来说,在Java语言中,s ...
- java中final 关键字的作用
final 关键字的作用 java中的final关键字可以用来声明成员变量.本地变量.类.方法,并且经常和static一起使用声明常量. final关键字的含义: final在Java中是一个保留的关 ...
- return在Java中的两个作用
Java中return的两个作用: (1)返回方法指定类型的值(这个值总是确定的),也可以是对象 (2)方法的结束
- Java中volatile关键字及其作用是什么?
在 Java 多线程中如何保证线程的安全性?那我们可以使用 Synchronized 同步锁来给需要多个线程访问的代码块加锁以保证线程安全性.使用 synchronized 虽然可以解决多线程安全问题 ...
随机推荐
- 如何优雅的将Object转换成List
Main主函数中的 Object obj模拟了List对象.后续的代码首先判断obj是否是List类型,然后使用Class.cast做类型转换. 如果你想使用更方便的方法,可以直接调用下面的函数. p ...
- [LeetCode]172. Factorial Trailing Zeroes阶乘尾随0的个数
所有的0都是有2和45相乘得'到的,而在1-n中,2的个数是比5多的,所以找5的个数就行 但是不要忘了25中包含两个5,125中包含3个5,以此类推 所以在找完1-n中先找5,再找25,再找125.. ...
- Android驱动-Java入门学习(java安装)
在ubuntu 14.04上java开发环境. 下载 jdk-7u75-linux-x64.tar.gz 使用tar xvf jdk-7u75-linux-x64.tar.gz 解压 在/usr/li ...
- 编写通用的Makefile
一个应用程序的形成是少不了一下几个步骤的. 1. 预处理 #检查语法错误.包含头文件.展开#if.#define等宏定义 2. 编译 #把.c文件转换为汇编文件.s 3. 汇编 #把.s汇编转换为机器 ...
- java字符统计+字符串压缩
要实习了.突然发现自己好像什么都不会,就去看看题吧.在网上看到一个字符串压缩的题.看了一眼,感觉用python很简单.一个for循环+字典就可以搞定. 但是呢,主要还是java.下面就用java来实现 ...
- 面试官:数据库自增ID用完了会怎么样?
看到这个问题,我想起当初玩魔兽世界的时候,25H难度的脑残吼的血量已经超过了21亿,所以那时候副本的BOSS都设计成了转阶段.回血的模式,因为魔兽的血量是int型,不能超过2^32大小. 估计暴雪的设 ...
- 第13章节 BJROBOT 雷达跟随【ROS全开源阿克曼转向智能网联无人驾驶车】
雷达跟随说明:注意深度摄像头的 USB 延长线,可能会对雷达扫描造成影响, 所以在雷达跟随前,把深度摄像头的 USB 延长线取下.另外雷达跟随范围大概是前方 50cm 和 120°内扫描到的物体都可以 ...
- YuebonCore 2021第一版发布,重构功能菜单模块
YuebonCore 2021.1.6 版本发布了,这是该软件 2021 年的首个版本更新. 对功能菜单模块进行重构,简化功能模块的新增配置,删除了原有的sys_function功能表,,优化sys_ ...
- 风炫安全WEB安全学习第十九节课 XSS的漏洞基础知识和原理讲解
风炫安全WEB安全学习第十九节课 XSS的漏洞基础知识和原理讲解 跨站脚本攻击(Cross-site scripting,通常简称为XSS) 反射型XSS原理与演示 交互的数据不会存储在数据库里,一次 ...
- Nginx配置请求头
最近发现一个问题: IOS访问后台接口是,总是application/json;charset=utf-8 但是后台接口只支持大写的UTF-8,修改了Nginx的请求头之后正常. proxy_set_ ...