封装

1.相关概念

java有三大特性:封装、继承、多态

封装是面向对象的思想的特性

对属性、方法、类、项目 进行封装

内部类也是封装的体现

封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互.

在程序设计的过程中要追求“高内聚,低耦合”。

高内聚:就是类的内部数据操作细节自己来完成,不允许外部干涉,

低耦合:就是, 仅暴露少量的方法给外部使用

通常,应禁止直接访问一个对象中数据的实际表示,而是应该通过操作接口来访问,这叫信息隐藏

2.对属性进行封装

对成员变量加修饰符 private  JavaBean规范

实体类中写set和get方法 【快捷键】

代码示例:

//
class Pandas{private String name;private int age;private double weight;private double height;//快捷键 source  -- Generate public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public double getWeight() {return weight;}public void setWeight(double weight) {this.weight = weight;}public double getHeight() {return height;}public void setHeight(double height) {this.height = height;}}
public class Test_01 {public static void main(String[] args) {Pandas pandas = new Pandas();pandas.setName("圆圆");pandas.setAge(6);pandas.setWeight(160.2);pandas.setHeight(173.3);System.out.println(pandas.getName()+pandas.getAge()+pandas.getWeight()+pandas.getHeight());}
}

权限修饰符

public 公开的

private 私有的

protected 受保护的

default 默认的(不写就是默认的)

权限修饰符去修饰 类,成员变量,成员方法 等。赋予他们不同的权限

权限修饰符
1. private ( 当前类访问权限 )
使用 private 修饰的 成员 只能在 当前类的内部 被访问。常用于修饰 成员变量 ( 封装 )。

2. default ( 包访问权限 )
默认权限修饰符。使用 default 修饰的 成员或外部类 可以被 相同包下的其他类 访问。

3. protect ( 子类访问权限 )
使用 protect 修饰的 成员 既可以被 同一个包中的其他类 访问,也可以被 不同包中的子类 访问。常用于修饰 希望被子类重写的方法 ( override )。

4. public ( 公共访问权限 )
使用 public 修饰的 成员或者外部类 可以被 所有类 访问。

this关键字

1.放在类中,用来表示当前对象

可以用this调用属性和方法

this关键字只能用在方法(成员\构造)中

2.this 很少用于调用当前的构造方法

3.this()只能在构造方法的第一行

代码示例:

class Rabbit {String name;int age;public Rabbit(String name, int age) {//this();//在调用无参构造this.name = name;this.age = age;}public Rabbit() {//在Rabbit的无参构造方法中调用了有参的构造方法this("狗狗", 12);//这个this 就是rabbit1System.out.println(this);//代表的当前的对象 打印的是一个内存地址    }//写一个方法//在main主函数中调用eat//对象.eat();  哪个对象调用 的eat方法  this就是那个对象public void eat() {//可以使用this调用属性this.name = "狗蛋";System.out.println(this.name);//可以使用this调用方法this.test();}public void test () {System.out.println("这个是测试方法");}
}
public class Demo6 {public static void main(String[] args) {Rabbit rabbit1 = new Rabbit();System.out.println(rabbit1);//rabbit1.eat();System.out.println(rabbit1.name);System.out.println(rabbit1.age);/*** com.qfedu.b_fengzhuang.Rabbit@15db9742 thiscom.qfedu.b_fengzhuang.Rabbit@15db9742 rabbit1*/Rabbit rabbit2 = new Rabbit();System.out.println(rabbit2);       /*** com.qfedu.b_fengzhuang.Rabbit@6d06d69c   thiscom.qfedu.b_fengzhuang.Rabbit@6d06d69c   rabbit2 */ }
}

多类合作

一个类对象可以当成另外一个类的成员变量

代码示例:

需求:两个宠物一个狗一个猫宠物饿了,需要主人给宠物喂食1.不同的宠物吃的不同  //如果是同一个投喂方法 需要传参 这个参数是 猫或狗类 对象 但是这是两个不同类型的 对象 所以要建两种方法? 或者一种方法 传不同的参数进去2.不同的宠物吃完食体力值增加3.主人和狗玩游戏 接飞盘的游戏。狗体力值减去10,但是会和主人的亲密度提升54.主人和猫玩游戏  滚毛球。猫体力值减去12 ,但是会和主人的亲密度提升7人类猫类狗类*/
//人类
class Person{private String name;private Cat cat;private Dog dog;public Person() {super();// TODO Auto-generated constructor stub}
//  public Person(String name, Cat cat, Dog dog) {
//      super();
//      this.name = name;
//      this.cat = cat;
//      this.dog = dog;
//  }public Person(String name) {super();this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Cat getCat() {return cat;}public void setCat(Cat cat) {this.cat = cat;}public Dog getDog() {return dog;}public void setDog(Dog dog) {this.dog = dog;}//人类喂猫方法public void feed(Cat cat) {cat.eat();}//人类喂狗方法public void feed(Dog dog) {dog.eat();}//和猫玩public void play(Cat cat) {cat.fluffBall();}//和狗玩public void play(Dog dog) {dog.catchFrisbee();}
}
//猫类
class Cat{private String name;private int strength;//体力值private int intimacy;//亲密度public Cat() {super();// TODO Auto-generated constructor stub}public String getName() {return name;}public void setName(String name) {this.name = name;}//   public Cat(String name, int strength, int intimacy) {
//      super();
//      this.name = name;
//      this.strength = strength;
//      this.intimacy = intimacy;
//  }// public Cat(int strength, int intimacy) {
//      super();
//      this.strength = strength;
//      this.intimacy = intimacy;
//  }public int getStrength() {return strength;}//设置猫的体力public void setStrength(int strength) {if (strength<0 ||strength >100) {System.out.println("猫猫的体力值不能小于0且不能大于100");throw new IllegalArgumentException("invalid strength value");//体力值无效}else {this.strength = strength;}  }public int getIntimacy() {return intimacy;}public void setIntimacy(int intimacy) {this.intimacy = intimacy;}//猫eat方法public void eat() {//每吃一次加10点体力if (strength>=100) {System.out.println(name+"吃不动了");this.strength = 100;}else {System.out.println(name+"正在吃,体力值加7");this.strength = strength+10;}//判断体力方法适合哪种状态//this.sleep();}//滚毛球public void fluffBall() {if (strength<=30) {System.out.println(name +"玩不动了,要吃饭");}else {System.out.println(name+"正在滚毛球,体力值减12,亲密度加7");this.strength = strength - 12;//玩一次消耗12点体力值this.intimacy = intimacy + 7; //增加7点亲密度if (intimacy>=100) {System.out.println("达成成就:【重度猫瘾患者】,亲密度已达上限");this.intimacy = 100;}} }//睡觉public void sleep() {if (strength<=30) {System.out.println(name + "要吃饭");}else if (strength>30 && strength<=40) {System.out.println(name +"困了");}else if (strength>40 && strength<=70) {System.out.println(name +"正无所事事");}else {System.out.println(name +"想让你起来嗨");}}//查询猫猫当前状态方法public void state(Person person,Cat cat) {//其实传一个参也行 传两个是为了方便修改里面单个数据System.out.println(person.getName()+" 的小猫 "+person.getCat().getName()+" 当前的状态是---> "+" 体力值:"+person.getCat().getStrength()+" 亲密度:"+person.getCat().getIntimacy());}
}
//狗类
class Dog{private String name;private int strength;//体力值private int intimacy;//亲密度public Dog() {super();// TODO Auto-generated constructor stub}public String getName() {return name;}public void setName(String name) {this.name = name;}//   public Dog(String name, int strength, int intimacy) {
//      super();
//      this.name = name;
//      this.strength = strength;
//      this.intimacy = intimacy;
//  }// public Dog(int strength, int intimacy) {
//      super();
//      this.strength = strength;
//      this.intimacy = intimacy;
//  }public int getStrength() {return strength;}//设置狗体力方法public void setStrength(int strength) {if (strength<0||strength >100) {System.out.println("修狗的体力值不能小于0且不能大于100");throw new IllegalArgumentException("invalid strength value");//体力值无效}else {this.strength = strength;}}public int getIntimacy() {return intimacy;}public void setIntimacy(int intimacy) {this.intimacy = intimacy;}//狗eat方法public void eat() {//每吃一次加7点体力if (strength>=100) {System.out.println(name+"吃不动了,体力值已满赶紧玩");this.strength = 100;}else {System.out.println(name+"正在吃,体力值加7");this.strength = strength+7;  }//判断体力方法适合哪种状态//this.sleep(); //还是单独调用吧}//接飞盘public void catchFrisbee() {if (strength<=30) {System.out.println(name +"玩不动了,要吃饭");}else {System.out.println(name+"正在接飞盘,体力值减10,亲密度加5");this.strength = strength - 10;//玩一次消耗10点体力值//体力值小于30玩游戏不会增加亲密度this.intimacy = intimacy + 5; //增加5点愉悦度if (intimacy>=100) {System.out.println("达成成就:【狗的好兄弟】,亲密度已达上限");this.intimacy = 100;}}}//睡觉public void sleep() {if (strength<=30) {System.out.println(name + "要吃饭");}else if (strength>30 && strength<=40) {System.out.println(name +"困了");}else if (strength>40 && strength<=70) {System.out.println(name +"正无所事事");}else {System.out.println(name +"想让你起来嗨");}}public void state(Person person,Dog dog) {System.out.println(person.getName()+" 的小狗 "+person.getDog().getName()+" 当前的状态是---> "+" 体力值:"+person.getDog().getStrength()+" 亲密度:"+person.getDog().getIntimacy());}
}
public class Test04 {public static void main(String[] args) {//实例化人类对象Person person = new Person("唐三少");//实例化猫猫对象Cat cat = new Cat();cat.setName("悠米");cat.setStrength(50);cat.setIntimacy(20);//人设置猫?person.setCat(cat);//查看猫猫状态//cat.state(person, cat);//实例化狗狗对象Dog dog = new Dog();dog.setName("旺财");dog.setStrength(60);dog.setIntimacy(40);//人设置狗?person.setDog(dog);//查看狗狗状态//dog.state(person, dog);//开始执行对狗的方法person.feed(dog);person.feed(dog);person.feed(dog);person.feed(dog);person.feed(dog);person.feed(dog);person.feed(dog);person.feed(dog);person.feed(dog);person.feed(dog);person.play(dog);person.play(dog);person.play(dog);person.play(dog);person.play(dog);person.play(dog);person.play(dog);person.feed(dog);person.feed(dog);person.feed(dog);person.feed(dog);person.feed(dog);person.feed(dog);person.play(dog);person.play(dog);person.play(dog);person.play(dog);person.play(dog);person.play(dog);person.play(dog);person.feed(dog);person.feed(dog);person.feed(dog);person.feed(dog);person.feed(dog);person.feed(dog);dog.state(person, dog);dog.sleep();System.out.println("-----------------------------------------------------");//开始执行对猫的方法person.feed(cat);person.play(cat);person.feed(cat);person.feed(cat);person.feed(cat);person.feed(cat);person.feed(cat);person.feed(cat);person.feed(cat);person.feed(cat);person.feed(cat);person.play(cat);person.play(cat);person.play(cat);person.play(cat);person.play(cat);person.play(cat);person.play(cat);person.feed(cat);person.feed(cat);person.feed(cat);person.feed(cat);person.feed(cat);person.feed(cat);person.feed(cat);person.feed(cat);person.feed(cat);person.play(cat);person.play(cat);person.play(cat);person.play(cat);person.play(cat);person.play(cat);person.play(cat);cat.state(person, cat);cat.sleep();}
}
//输出结果
旺财正在吃,体力值加7
旺财正在吃,体力值加7
旺财正在吃,体力值加7
旺财正在吃,体力值加7
旺财正在吃,体力值加7
旺财正在吃,体力值加7
旺财吃不动了,体力值已满赶紧玩
旺财吃不动了,体力值已满赶紧玩
旺财吃不动了,体力值已满赶紧玩
旺财吃不动了,体力值已满赶紧玩
旺财正在接飞盘,体力值减10,亲密度加5
旺财正在接飞盘,体力值减10,亲密度加5
旺财正在接飞盘,体力值减10,亲密度加5
旺财正在接飞盘,体力值减10,亲密度加5
旺财正在接飞盘,体力值减10,亲密度加5
旺财正在接飞盘,体力值减10,亲密度加5
旺财正在接飞盘,体力值减10,亲密度加5
旺财正在吃,体力值加7
旺财正在吃,体力值加7
旺财正在吃,体力值加7
旺财正在吃,体力值加7
旺财正在吃,体力值加7
旺财正在吃,体力值加7
旺财正在接飞盘,体力值减10,亲密度加5
旺财正在接飞盘,体力值减10,亲密度加5
旺财正在接飞盘,体力值减10,亲密度加5
旺财正在接飞盘,体力值减10,亲密度加5
旺财正在接飞盘,体力值减10,亲密度加5
达成成就:【狗的好兄弟】,亲密度已达上限
旺财玩不动了,要吃饭
旺财玩不动了,要吃饭
旺财正在吃,体力值加7
旺财正在吃,体力值加7
旺财正在吃,体力值加7
旺财正在吃,体力值加7
旺财正在吃,体力值加7
旺财正在吃,体力值加7
唐三少 的小狗 旺财 当前的状态是--->  体力值:64 亲密度:100
旺财正无所事事
-----------------------------------------------------
悠米正在吃,体力值加7
悠米正在滚毛球,体力值减12,亲密度加7
悠米正在吃,体力值加7
悠米正在吃,体力值加7
悠米正在吃,体力值加7
悠米正在吃,体力值加7
悠米正在吃,体力值加7
悠米正在吃,体力值加7
悠米吃不动了
悠米吃不动了
悠米吃不动了
悠米正在滚毛球,体力值减12,亲密度加7
悠米正在滚毛球,体力值减12,亲密度加7
悠米正在滚毛球,体力值减12,亲密度加7
悠米正在滚毛球,体力值减12,亲密度加7
悠米正在滚毛球,体力值减12,亲密度加7
悠米正在滚毛球,体力值减12,亲密度加7
悠米玩不动了,要吃饭
悠米正在吃,体力值加7
悠米正在吃,体力值加7
悠米正在吃,体力值加7
悠米正在吃,体力值加7
悠米正在吃,体力值加7
悠米正在吃,体力值加7
悠米正在吃,体力值加7
悠米正在吃,体力值加7
悠米吃不动了
悠米正在滚毛球,体力值减12,亲密度加7
悠米正在滚毛球,体力值减12,亲密度加7
悠米正在滚毛球,体力值减12,亲密度加7
悠米正在滚毛球,体力值减12,亲密度加7
悠米正在滚毛球,体力值减12,亲密度加7
达成成就:【重度猫瘾患者】,亲密度已达上限
悠米正在滚毛球,体力值减12,亲密度加7
达成成就:【重度猫瘾患者】,亲密度已达上限
悠米玩不动了,要吃饭
唐三少 的小猫 悠米 当前的状态是--->  体力值:28 亲密度:100
悠米要吃饭

Java学习分享—【面向对象基础】 封装、权限修饰符等...相关推荐

  1. Java基础课程---权限修饰符

    1 java  权限修饰符 从小到大 private 只有类中能用 缺省,类,同一个包中能用 protected,类,同一个包中能用,以及不同包中的子类可以使用 public:公共的,都可以使用,同一 ...

  2. java中四种默认的权限修饰符,Java中四种访问权限资料整理

    一.Java中有四种访问权限, 其中三种有访问权限修饰符,分别为private.public.protected,还有一种不带任何修饰符(default). 1. private: Java语言中对访 ...

  3. java子承父业(继承,访问权限修饰符,super,重写,final)

    1.继承 :  子承父业 目的 : 提高代码的复用性         作用: 子类一旦继承父类,有权使用父类中的成员,可以在子类中定义子类独有的内容         定义:   子类  extends ...

  4. java学习之面向对象和封装

    面向过程:当需要实现一个功能的时候,每一个具体的步骤都要亲力亲为,详细处理每一个细节. 面向对象:当需要实现一个功能的时候,不关系具体的步骤,而是找一个已经具有该功能的人帮忙做事情. 面向过程强调步骤 ...

  5. Java语法封装之继承、访问权限修饰符、重载与重写、this与super、final、Javabean的使用

    3.3封装 封装 : 隐藏内部的实现细节,对外提供公共的访问方式.方法,类,属性的私有化- 都是封装的体现 封装优点 : 提高程序的安全性 提高代码的复用性 私有是封装,但是封装不是私有 3.3.1 ...

  6. 绝密101:import,java,packag的顺序、权限修饰符、类及其组成可用的修饰符

    import,java,packag他们三个直接有没有顺序呢? packag:到达的路径,所在文件的路径,他最终以包的形式结束(他在最前面) import:导入外界你想要使用的类,它最终以你想要结束的 ...

  7. 第三次学JAVA再学不好就吃翔(part41)--修饰符

    学习笔记,仅供参考 文章目录 面向对象 四种权限修饰符 常见修饰符 面向对象 四种权限修饰符 本类 同一个包下(子类和无关类) 不同包下(子类) 不同包下(无关类) private √ 默认 √ √ ...

  8. 学习大数据的第13天——Java面向对象(接口、分析参数返回值的类型不同时如何解决、包以及访问权限修饰符(public、protected、默认、private))

    学习大数据的第13天--Java面向对象(接口.分析参数返回值的类型不同时如何解决.包以及访问权限修饰符(public.protected.默认.private)) 接口 接口的基本定义: 1.1.语 ...

  9. JAVA面向对象:相关基础知识(带包编译--权限修饰符--内部类)

    目录 1.带包编译 2.权限修饰符 3.内部类 1.带包编译 解决使用notepad++ 等文本编辑器编写的java类中如果需要 package 的解决方案: 手动式:手动建包,.java文件放在包外 ...

最新文章

  1. Python 速度慢,试试这个方法提高 1000 倍
  2. 案例十:输入一批整数,输出其中的最大值和最小值,输入数字0时结束循环。...
  3. Windows常用的网络命令
  4. 过目不忘JS正则表达式(转)
  5. 快来,这里不仅有帅哥,还有美女!!
  6. Linux 上免费的视频转换器FFmpeg
  7. 蓝桥杯备赛第一天-138译码器
  8. python 过采样算法_类不平衡数据分类准确率的提升算法smote过采样方法
  9. 【图像分割】基于马尔可夫随机场实现图像分割附matlab代码
  10. 海洋cms 模板标签手册
  11. 微信自研生产级 Paxos 类库 PhxPaxos 实现原理介绍
  12. 二维树状数组--hdu1892
  13. PayPal个人高级账户收款有限制和限额吗?
  14. 解决npm和node升级步骤
  15. 工业物联网安全需要一揽子服务商
  16. 二道题:分组顺序向下填充 和 标注数据整理
  17. 终于装好titan x显卡驱动
  18. switch写打折促销活动C语言,求C语言大神编一个程序(分别用switch和if-else结构)某商店推出打折活动,要求购物达到或超过2000元的...
  19. 2021中国各省区块链政策竞争力指数TOP10(3月)|链塔月榜
  20. 交叉验证(简单交叉验证、k折交叉验证、留一法)

热门文章

  1. 2021年方城一高高考成绩查询,2019年方城县第一高级中学高考喜报
  2. CSAPP-Revision-ch03(四)---浮点代码目前不知道到底考不考
  3. 贪心算法之埃及分数问题
  4. KUKA机器人程序运行方式总结
  5. PCB电路板常见问题的检测和解决方案
  6. 从简历被拒到收割今日头条 offer,我用一年时间破茧成蝶!
  7. R语言知道预测值和真实值,怎么计算R2
  8. JSVC简介之快速入门
  9. CiteSpace的入门学习,分析知网文献与web of science
  10. elasticsearch 配置安全认证X-pack