public class PersonTest {
public static void main(String[] args) {
Person p1 = new Person();
p1.setAge(98);
System.out.println("年纪是" + p1.getAge());
}
}
public class Person {
private int age;
public void setAge(int i) {
if((i >= 0)&&(i <=130)) {
age = i;
System.out.println("年纪是" + age);
}else {
System.out.println("超出范围");
}
}
public int getAge() {
return age;
}
}
你有这个想法,说明你是个敲代码是有想法的。 你之所以有这个想发是因为你的业务场景所导致的,因为你的对象就一个私有属性,最后也只是打印年龄。 如果对象中有多个私有属性 比如 名字 年龄 性别 等等 如果只需要获取当前对象的某个属性,不需要修改。这个时候set 就不能用的 因为set 方法的返回时void。 这个时候就需要get了 。
但是在某种场景下单一原则就不很合适。比如并发情况下,可以看一下java 并发工具包中的原子操作类 其中就是将两种操作合并在一起来保证操作的原子性。
其实代码的设计是根据业务需求场景来实现的,不一定是固定不变的。敲代码一定要有想法。
请保持你这种想法,然后不停的去求证。 虽然有时候想的不对,但是会给你带来很多收获。时间久了你的思路就越来越活跃。
方法即行为。每个方法都有各自的行为,负责各自的作用。
为什么会有set/get方法的概念。因为为了防止对外直接修改类的属性,所以将属性private私有化,并对外public提供对应的set/get方法,间接操作类中的属性。
set方法是给属性设置值的,get方法是为了获取属性值的。
如果所有业务都通过set方法来实现的话,那么这种场景是在同一个地方即set的同时获取属性值,那么就没意义了。
get是为了外部能过获得类的成员变量值
set是为了外部修改类的成员变量值
你的set函数做不到让外部得到当前的成员变量值啊,自然不能合并
程序设计追求“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成(set/get方法),不允许外部干涉。低耦合是仅暴露少量的方法给外部使用,尽量方便外部调用。
编程中封装的具体优点:
1.提高代码的安全性
2.提高代码的复用性
3.“高内聚”:封装细节,便于修改内部代码,提高可维护性
4.“低耦合”:简化外部调用,便于调用者使用,便于扩展和写作。
java中使用“访问控制符”来控制哪些细节需要封装。哪些细节需要暴露的。Java中4种“访问控制符”。分别为:private、default、protected、public,他们说明了面相对象的封装性。
get是取数据,set是存数据,能写在一起吗,意义相反水火不容
get是为了你在创建这个类的对象的时候,
比如age你set了个10
那你要用到这个对象中age属性怎么办呢
getAge()方法就是干这事的
两者意义不一样,set是存,get是取
那你可以试试 能把 get 和set 做的事情都写一起吗
比如 Person 这个类, 我想获取他的age ,不用get,你尝试用set获取呢
那我觉得也不需要get和set,直接把变量public就可以了,想怎么改就怎么改
set()是设置值,get()是取值,这是两个方法,就像你去ATM机取钱,存钱归存钱,取钱归取钱,总不能一台ATM机在存的同时帮你把钱取出来,或者在取钱的同时将钱存进去一样。
已经有很多大佬告诉你get、set方法的含义了,我在这说一下,如果你感觉重复写get、set比较枯燥,可以在实体类里加上@Data这个注解
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!