封装:把属性和方法私有,仅对外提供访问方式。
封装有几种类型:类的封装:将方法和属性写进类中就是类的封装。方法的封装:对外提供访问权限,仅在该类中有效。数据封装:(同上)。
封装的好处:降低耦合率 可重复调用类中的属性 提高安全性
1,封装数据代码实现:
class Person {
private int age;
public void setter(int a) {
System.out.println("gtter" + this);
this.age = a;
}
public int getter() {
System.out.println("gtter" + this);
return this.age;
}
}
public class Demo1 {
public static void main(String[] args) {
Person p = new Person();
p.setter(80);
p.getter();
int b = p.getter();
}
}
this是什么玩意?对于我而言在暑假this就是代表当前对象,今天有了更新的认识this代表了当前对象的地址,了解了内存图解就好了解了。我们定义一个setter()方法在电脑里是setter(this),在main方法里我调用setter,在电脑里就是setter(p),在创建对象时p指向对象的地址,p将地址以隐式参数的形式传给this,那么在方法中打印this就是打印地址。我上面的setter,getter方法都不能用static。
2,通过封装,保证属性的合法性:
package com.lishuai.fuxi.www;
class People5 {
private int age;
private String name;
public int getAge() {
if (age < 0 || age > 150) {
System.out.println("你输入的年龄非法");
return 00000;
} else {
return age;
}
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class FengZhuang {
public static void main(String[] args) {
// TODO Auto-generated method stub
People5 p=new People5();
p.setAge(180);
p.setName("lilei");
int i=p.getAge();
System.out.println(p.getName()+"-- -- "+i);
}
}
我们通过封装技术,将属性私有化,让调用者无法随意赋值,当赋值错误时,通过get方法返回来的数据将是错误数据,并将会提示错误。
封装技术将使我们的属性更安全。