封装

封装的作用:封装就是保护内容,保证某些属性或方法可以不被外部看见


1、为什么要有封装,我们先来看一个例子

class Person
{
	//人中有姓名和年龄两个属性
    String name ;              //表示姓名
    int age ;                  //表示年龄
    public void tell()
    {        //取得信息
        System.out.println("姓名 :" + name + ", 年龄:" + age) ;
    }
} 

public class EncDemo01
{
    public static void main(String args[])
    {
        Person per = new Person() ;   //声明并实例化对象
        per.name = "张三" ;           //为name属性赋值
        per.age =<span style="color:#ffffff;background-color: rgb(255, 0, 0);"> -20 </span>;                //为age属性赋值
        per.tell() ;
    }
}


输出结果:

姓名 :张三, 年龄:-20


语法上讲没有问题,但从实际角度看,不符合,根本是属性可以被外部直接访问,如年龄不可以为负数。


实现封装:

为属性封装:private 属性类型  属性名称

为方法封装: private  方法返回值   方法名称(参数列表){}

被封装的属性如果需要被访问,则需要setter及getter方法完成。


<span style="background-color: rgb(255, 255, 255);"> class Person
 {
    //人中有姓名和年龄两个属性
   </span><span style="background-color: rgb(255, 102, 102);"> private</span><span style="background-color: rgb(255, 255, 255);"> String name;              //声明姓名属性
   </span><span style="color:#ffffff;background-color: rgb(255, 102, 102);"> private</span><span style="background-color: rgb(255, 255, 255);"> int age;                  //声明年龄属性
    public void</span><span style="background-color: rgb(255, 102, 102);"> setName</span><span style="background-color: rgb(255, 255, 255);">(String n){     //设置姓名
        name = n;
    }
    public void </span><span style="background-color: rgb(255, 102, 102);">setAge</span><span style="background-color: rgb(255, 255, 255);">(int a){          //取得年龄
      </span><span style="background-color: rgb(255, 102, 102);">//加入检测机制,</span><span style="background-color: rgb(255, 255, 255);">如果年龄小于0或大于150岁,则置为0。</span>
<span style="background-color: rgb(255, 255, 255);"><span style="white-space:pre">	</span> if(a>=0 && a<=150){             //加入验证
           age = a;
       }
    }
    public String </span><span style="background-color: rgb(255, 102, 102);">getName()</span><span style="background-color: rgb(255, 255, 255);">{           //取得姓名
        return name;
    }
    public int</span><span style="background-color: rgb(255, 102, 102);"> getAge()</span><span style="background-color: rgb(255, 255, 255);">{               //取得年龄
        return age;
    }
    public void tell(){                //取得信息
        System.out.println("姓名 :" + name + ", 年龄:" + age) ;
    }
 } 
 public class EncDemo02
 {
    public static void main(String[] args)
    {<span style="color:#ffffff;">
       </span> Person per = new Person();   //声明并实例化对象
        per.setName ("张三");           //调用setter设置姓名
        per.setAge(-30);                //调用setter设置年龄
        per.tell();
    }
 } ;   </span><span style="background-color: rgb(255, 102, 102);">
</span>

输出结果:

姓名 :张三, 年龄:0



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值