java封装性的运引用_Java

封装性教程

封装性是面向对象的第一大特性,所谓的封装性就是指属性对外部不可见。外部不能够随意修改内部数据,保护类里面的属性安全。

封装性案例

没有使用封装代码

/**

* 定义一个 person 类

*/

package com.haicoder.net.clas;

public class Person{

String name;

int age;

public void desc(){

System.out.println("姓名 : " + name + ", 年龄 : " + age);

}

}

定义一个访问 Person 类创建的对象的访问类

/**

* 用来创建对象,并使用的测试类

*/

package com.haicoder.net.clas;

public class TestPerson{

public static void main(String[] args){

System.out.println("嗨客网(www.haicoder.net)");

Person person = new Person();

person.name = "嗨客网";

person.age = 200;

person.desc();

}

}

运行结果如下:

e32ea195aed42f6fcb9a457ea1b672e3.png

我们看到了 Person 里面的名字和年龄是可以随便赋值的,随便访问的。一个人对年龄 200 岁,在实际世界里面是比较荒谬的。其实这个在面向对象里面是不允许的。所以为了避免这样的情况发生,在真实的开发场景里面,会给类里面的属性加上 private 关键字修饰。这个就会将类里面的属性的

使用封装代码

package com.haicoder.net.clas;

/**

* 定义一个 person 类

*/

public class Person{

private String name;

private int age;

public void desc(){

System.out.println("姓名 : " + name + ", 年龄 : " + age);

}

}

定义一个访问 Person 类的测试类:

package com.haicoder.net.clas;

/**

* 用来创建对象,并使用的测试类

*/

public class TestPerson{

public static void main(String[] args){

System.out.println("嗨客网(www.haicoder.net)");

Person person = new Person();

person.name = "嗨客网"; //编译不通过,报错

person.age = 200; //编译不通过,报错

person.desc();

}

}

使用封装编译报错如下:

8b778e299d42a1dcb87d350dac85fb3a.png

因为 person 里面的属性加了 private 权限,所以不能够直接访问了,也不能够对 person 里面的属性随便赋值。被 private 关键字修饰的属性,只能够在当前类里面访问,出了当前类是不能够被访问的。

封装属性

在上面,我们对类里面的属性加类 private 修饰,那么怎么对这些属性进行操作呢?在实际的编程过程中,我们会用 get 和 set 方法,来对类里面的属性进行访问和操作。

package com.haicoder.net.clas;

/**

* 定义一个 person 类

*/

public class Person{

private String name;

private int age;

public String getName(){

return name;

}

public void setName(String name){

this.name = name;

}

public int getAge(){

return age;

}

public void setAge(int age){

this.age = age;

}

public void desc(){

System.out.println("姓名 : " + name + ", 年龄 : " + age);

}

}

定义一个调用上面对象的测试类

package com.haicoder.net.clas;

/**

* 用来创建对象,并使用的测试类

*/

public class TestPerson{

public static void main(String[] args){

System.out.println("嗨客网(www.haicoder.net)");

Person person = new Person();

person.setName("嗨客网");

person.setAge(200);

person.desc();

}

}

运行结果如下:

183c6be52ded41b2dfb371bf4d1becd5.png

我们可以看到和上面直接访问属性的时候的运行结果一样,age 的年龄是 200,在实际生活中是不合理的,但是既然是调用的 setAge 方法来赋值,我们可以在这个方法里面来做限制。

package com.haicoder.net.clas;

/**

* 定义一个 person 类

*/

public class Person{

private String name;

private int age;

public String getName(){

return name;

}

public void setName(String name){

this.name = name;

}

public int getAge(){

return age;

}

public void setAge(int age){

if (age < 0 || age > 150) {

this.age = 0;

} else {

this.age = age;

}

}

public void desc(){

System.out.println("姓名 : " + name + ", 年龄 : " + age);

}

}

我们看到,在调用 setAge 方法的时候,我们会先对 age 的数值进行比较,如果不符合真实场景了,我们就设置为 0。运行结果如下:

82aa6c16f8e20df3f2f43e1aa1d2fddd.png

Java封装性总结

封装性,在一定程度上面保证了对象创建的时候属性的安全性,不会将属性暴露出来给别的类随便访问,我们用 private 对属性进行限制,然后用 public 修饰的 get 和 set 方法来对属进行操作。这样别的对象在操作属性的时候,通过调用对属性操作的方法就可以完成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值