疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

面向对象三大特性之封装_Java培训


 

        package com.ivantian.CoreFengZhuang;

  import static java.lang.System.*;

  //

  class Wife{

  private String name;

  private double hight;

  private double weight;

  //构造函数

  Wife(String name,double hight,double weight){

  this.name = name;

  this.hight = hight;

  this.weight = weight;

  }

  public String getName() {

  return name;

  }

  public void setName(String name) {

  this.name = name;

  }

  public double getHight() {

  return hight;

  }

  public void setHight(double hight) {

  this.hight = hight;

  }

  public double getWeight() {

  return weight;

  }

  public void setWeight(double weight) {

  this.weight = weight;

  }

  //

  public void washClothes(){

  out.println(this.getName()+" 给我洗衣服。");

  }

  //

  public void cookDinner(){

  out.println(this.getName()+" 给我烧饭吃。");

  }

  //

  public boolean beautiful(){

  if((this.hight<=180.00 && this.hight>=150.00)&&(this.weight<=180.00 &&

  this.weight>=100.00)){

  out.println(this.getName()+" is My favorite!");

  return true;

  }else{

  out.println(this.getName()+" 不是我的菜。");

  return false;

  }

  }

  }

  public class FindWife {

  public static void main(String[] args) {

  //实例化三个奇女子

  Wife fengjie = new Wife("凤姐",140.00,163.00);

  Wife furong = new Wife("芙蓉姐姐",170.00,172.00);

  Wife xiaoyueyue = new Wife("小月月",200.00,156.00);

  //凤姐能不能为你洗衣服?

  if(fengjie.beautiful()){

  fengjie.washClothes();

  fengjie.cookDinner();

  }

  out.println("=====================");

  if(xiaoyueyue.beautiful()){

  xiaoyueyue.washClothes();

  xiaoyueyue.cookDinner();

  }

  //让小月月改变

  xiaoyueyue.setHight(160.00);//小月月增高成功

  xiaoyueyue.setWeight(160.00);//小月月成功减肥

  //小月月也成美女了

  out.println("=====================");

  if(xiaoyueyue.beautiful()){

  xiaoyueyue.washClothes();

  xiaoyueyue.cookDinner();

  }

  //芙蓉姐姐 还不错

  out.println("=====================");

  if(furong.beautiful()){

  furong.washClothes();

  furong.cookDinner();

  }

  }

  }

  //输出结果如下:

  凤姐 不是我的菜。

  =====================

  小月月 不是我的菜。

  =====================

  小月月 is My favorite!

  小月月 给我洗衣服。

  小月月 给我烧饭吃。

  =====================

  芙蓉姐姐 is My favorite!

  芙蓉姐姐 给我洗衣服。

  芙蓉姐姐 给我烧饭吃。

  从上面的一个简单的事例代码看,你做了哪些封装?不难回答,类的私有数据(又叫做属性,就是说你要找老婆的基本特征,外貌等),当你找老婆的时候,无法直接操作她的身高,体重,年龄,只能通过方法beautiful()来判断,当然你不知道Wife类中还有那些私有数据,知道判断标准就足够了。

  所以说,封装的主要目的就是隐藏对象细节,将对象当做黑盒进行操作, 比如,有三个奇女子实例供我们选择,会调用Wife类的构造函数,但是并知道构造函数的细节,之后呢,你要判断奇女子那个更适合你,你就调用了beautiful()函数来判断,所以,要操作对象,一律得通过类提供的方法调用。

  private也可以用在方法和构造函数的声明上,私有方法或构造函数通常是类内部某个共享的演算的流程,外界不用知道私有方法的存在。

  综上所述,小可可以认为有以下三种封装形式:

  一,封装对象的初始流程构造函数,实现了对象初始化的封装。比如代码,如没有构造函数Wife(){},对的,函数名称和类的写法一样,只能是void类型,默认是public属性,可以为private。

  【private,public,还有一个protected 等权限修饰符会在后面的章节详细总结。】

  若是没有,你new一个"对象"的时候,要反反复复的将事例的属性写一篇,比较浪费代码空间,构造函数将类属性封装起来,一句就可以解决。如代码中:

  如果不写构造函数的,在实例化对象的时候,JVM会默认创建一个没有参数的构造函数。

  二,封装对象操作流程

  这里就不难理解了,函数或者称为行为,动作均可以,就是用来操作属性的。比如判断是不是美女的函数beautiful(),比如身高,体重在那个范围,三围在那个范围才算是MM,是西施还是东施……

  再 如,你找到了老婆,调用了getName(),获得了美女的芳心,她便把自己的基本"属性信息"交给你了,她还可以帮你洗衣服,做晚餐等等,这些都是类Wife的"操作流程".

  //

  public void washClothes(){

  out.println(this.getName()+" 给我洗衣服。");

  }

  //

  public void cookDinner(){

  out.println(this.getName()+" 给我烧饭吃。");

  }

  三,封装对象内部数据

  因为Wife类的基本信息在你得到她的芳心之前,都是私有的,你是不知道的,但是她为了让你了解她,于是提供了取值方法(Getter),这样你便可以得到她的基本信息。保证了改奇女子信息的安全性。所以说,封装在某种程度上也保证了数据的安全。

  当然了,当你们在一起了,你可以让她减肥或者增高,当然要征得她同意,来满足你的视觉效果,Setter,当然private类型的数据还有它的访问范围(后面还会接着说),在同一个类中还是可以访问的。如例子中,手动来修改小月月童鞋的体重让她符合你的口味。

  //让小月月改变

  xiaoyueyue.setHight(160.00);//小月月增高成功

  xiaoyueyue.setWeight(160.00);//小月月成功减肥

  随着IT行业对人才实战型的要求越来越高,很多参加软件开发培训的学员深受欢迎,而疯狂Java的实际教学经验告诉我们,零基础人员也是一样可以学好IT的。积累项目经验。疯狂软件学院的最热门课程选择是Java软件开发课程,知识沉淀深厚的疯狂Java老师团队,让你感受Java的魅力,激发你对于编程的热爱,让你在半年的时间内掌握8-10万的代码量,掌握Java核心技术,成为真正的技术高手;通过大量全真企业项目疯狂训练,迅速积累项目经验。让你成为技能型的现代化高端人才,迅速获得高薪就业!疯狂Java培训班,Android培训班火热报名中:

  抢座热线:020-28309358,020-28309378

  咨询QQ:707552864,544627560

  请登陆疯狂软件学院官网http://www.fkjava.org/

  疯狂软件学院地址:广州市天河区车陂大岗路4号沣宏大厦3楼