java 中 为什么一般都把类的属性设置为private

java 中 为什么一般都把类的属性设置为private

java 中 为什么一般都把类的属性设置为private,然后再用get,set方法控制该属性,这有什么好处吗?请自己想通了再回答,谢谢!

 

      为了不让其示例对象直接通过 对象.属性名 来使用和修改,而是通过set属性名,get属性名,更安全,这样属性就不会随意的被赋值上任何非法的值了,可以在set属性名的方法中进行控制。比如说:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

private String gender; //性别

public void setGenger(String g){

    if("男".equals(g) || "女".equals(g)){

        gender = g;

    }else{

        //你是人妖?

        gender = "男";//我们默认为男人妖

    }

}

public String getGenger(){

    if(这个用户设置了对其他人隐藏性别){

        return "你猜";

    }else{

        return gender;

    }

}

      以上有效的保证了数据的安全性与合法性,不然你不能保证别人拿到gender属性会用来干嘛,或者是要对gender属性干嘛你都不知道。

      别人stu.gender = "猪",你也无法控制,你也不可能在每一个gender赋值的地方逐一判断,那样工作量多大,这样还可以省事,减少工作量。

      你也许会天真的以为你自己写的东西我自己难道不知道嘛,那你就错了,很多时候你写的东西是要给很多人用的,或者你要用别人实现的很多东西。

Java 中,子继承父属性(字段或变量)时,通常不会直接访问它们,而是通过`super`关键字或者`this`关键字来间接访问。原因有以下几点: 1. 封装性:Java 遵循封装原则,即数据成员应该是私有的(默认为private),外部无法直接访问。为了保护数据的安全性和完整性,防止意外修改,我们需要提供公共的方法来操作这些属性。 2. 继承的目的:子继承父通常是为了解决特定的问题并添加新的功能,而不是简单地复制父的所有内容。通过访问修饰符如 `protected` 或 `public` 提供的访问控制,可以限制属性的可见范围,使得子可以根据需要选择性地使用。 3. 防止名称冲突:如果直接使用父属性名,可能会导致命名冲突,特别是在大型项目中。通过`super`或`this`,可以明确指代是父的还是本属性。 4. 代码清晰和维护性:使用`super`或`this`可以使代码更易于理解和维护,特别是当父和子都有同名的属性时,可以避免混淆。 要使用父属性,子通常会在构造函数中初始化、设置方法中调用父的相应属性,或者是通过getter和setter方法进行访问。例如: ```java class Parent { private String name; } class Child extends Parent { public void initialize() { super.name = "Inherited Name"; // 使用super访问父属性 } public void display() { System.out.println(this.name); // 使用this访问本属性,如果未覆盖则显示父的name } } ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值