封装

封装是学java 很重要的一个思想,

封装顾名思义就是打包装起来,为什么要封装呢?封装又有什么好处?

封装:就是隐藏类的一些具体实现,通过提供一些接口,来实现一些功能。
          将类的状态信息隐藏在类的内部,不允许在类的外部直接访问,
          而是通过这个类提供的一些方法,来对属性进行操作以及访问。

        比如一个小卖部,你不能随意拿取里面的东西,需要给钱说出你需要的东西,

        卖家才会给你,封装就是这种思想

封装的好处:1·控制存取属性值的语句,来避免对数据的不合理操作
                      2·一个封装好的类,是非常容易使用的。
                      3·代码更加模块性,可读性。

封装的步骤:改属性的可见性来限制对属性的访问;为每个属性创建一对赋值
                      (setter)方法和取值(getter)方法,用于对这些属性的存取;在赋值方法中,加入对
                     属性的存取控制语句。

封装的难点:搞清楚get和set的作用,get是获取,然后返回值,set是设置,传参数进去

举一个java 中的小小例子:

/*
public     
protected
(default) --> 默认情况
private


public --> 公开的,整个项目中可用, 权限最大

protected  --> 子类和本类,如果是在另外一个包中的子类,也可以使用protected修饰的父类的内容

(default)  --> 我们没有写修饰符,那么是默认的, 包权限,
在同一个包中,你就可以使用到

private   --> 私有的,只能在本类中用


这三个关键字叫做 权限修饰符, 可以修饰 类、方法、和属性


*/
public class Cat
{
 //
 private String name;
 private String sex;
 private String strain;

 private int health = 100;
 private int hungry = 100;
 private int love = 50;

    public Cat(String name, String sex, String strain){

  this.name = name;
  this.sex = sex;
  this.strain = strain; 

 }

 public Cat(String name, String sex, String strain, int health, int hungry, int love){

  this(name, sex, strain);
  this.health = health;
  this.hungry = hungry;
  this.love = love;

 }


 /*
 setter 方法

 public void set属性名首字母大写(当前要设置的属性类型 形参名){

  this.属性名 = 形参名;

  }

 
 */

 public void setName(String name){

  //给对应的实例变量 赋值
  this.name = name;
  
 }

 public void setSex(String sex){

  this.sex = sex;
 }

 public void setStrain(String strain){

  this.strain = strain;
 }


 //健康值
 public void setHealth(int health){

  //规定健康值最大只能设置100, 如果你的设置超过100, 那么我给你设置为默认值 100

  if (health > 100 || health < 0)
  {
   this.health = 100;

   System.out.println("健康值设置不合规定, 已调整为默认值" + this.health);

  }else{

   this.health = health;

  }

  

 }

 public void setLove(int love){

  this.love = love;

 }

 /*
 访问器方法
 public 要获取的实例变量的类型 get要获取的实例名(){

  return 对应的属性值;

    }
 
 */

 public String getName(){

  return name;
 }

 public String getSex(){

  return sex;
 }

 public String getStrain(){

  return strain;

 }

 //健康值
 public int getHealth(){

  return health;
 }

 public int getLove(){

  return love;
 }

 public void showInfo(){

  System.out.println("宠物的自白:");
  System.out.println("我的名字是:" + name + ",我的性别是:" + sex + ", 我的品种是: " + strain);
  System.out.println("我的健康值:" + health + ",我的饥饿值是:" + hungry + ", 我的亲密度是: " + love);


 }

 //玩耍行为 --》 主人陪小猫玩
 //没次玩耍,小猫跟主人的亲密度+10
 //小猫的健康值 -5
 public void play(){

  love += 10;

  health -= 5;

  if (love >= 100)
  {
   System.out.println("恭喜您,您和" + name + "的亲密度已经满槽");
   love = 100;
  }

  if (health <= 50)
  {
   System.out.println(name + "已经病了,快带他去医院吧!");
  }



 }

 //吃饭的行为, --》 主人可以给小猫喂食,
 //喂食一次,健康值 + 10,  当达到100,就满了,就让小猫去运动
 public void eat(String food){

  System.out.println(name + "在开心的吃" + food);

  health += 10;

  if (health >= 100)
  {
   System.out.println("您的小猫已吃饱,请带他出去运动一下!");
   health = 100;
  }


 }


 /*
 private static void introduceSelf(){

  System.out.println("--------------");

 }

 static void introduce(){

  //private关键字 可以修饰属性和方法,它修饰的属性和方法,不能够在类的外部和子类中使用
  //private修饰的属性和方法,只能在本类中获取到
  Cat.introduceSelf();

  System.out.println("*****************");

 }
 */











或者用一个更简洁明了的图片



}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值