多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 类的封装 当一个类的成员变量可以被随意访问时,则这个成员变量的值可能被设置为不符合要求的数据,为了解决这个问题,在定义一个类时,应该对成员变量的访问做出一些限制,不允许外界随意访问,此时就需要用到类的封装。 类的封装是指在定义一个类时,将类中的属性私有化,即使用private关键字来修饰,私有属性只能在它所在的类中被访问。为了让外界访问这些私有属性,需要提供一些使用public修饰的公有方法。 ``` class Student { var name: String = "" //name属性,默认是公有属性 private var age: Int = 0 //age属性,是私有属性 //默认setAame()方法为公有方法 fun setAge(age: Int) { if (age >= 0) { this.age = age } else { println("输入年龄有误!") } } //默认sayHello()方法为公有方法 fun sayHello() { println("我叫${name},我今年${age}岁。") } } fun main(args: Array<String>) { var stu = Student() stu.name = "小雷" //访问公有属性name stu.setAge(-4) //访问私有属性age stu.sayHello() //访问公有方法sayHello() } ``` 运行结果 ``` 输入年龄有误! 我叫小雷,我今年0岁。 ``` 在上述代码中,使用private关键字将age属性声明为私有,setAge()方法与sayHello()方法默认为公有,其中setAge()方法用于设置age属性的值,sayHello()方法用于输出学生信息。在main()方法中创建一个Student的实例对象stu,接着分别调用stu.name、stu.setAge()设置name、age属性值,会发现这里将age属性值设置为-4,明显不符合要求,由于在setAge()方法中会对age属性值进行判断,传入的值小于0,因此会打印“输入年龄有误”的信息,age属性没有被赋值,仍为默认初始值0。