封装
来源:互联网 发布:21天学通c语言电子版 编辑:程序博客网 时间:2024/04/30 08:20
封装是学java 很重要的一个思想,
封装顾名思义就是打包装起来,为什么要封装呢?封装又有什么好处?
封装:就是隐藏类的一些具体实现,通过提供一些接口,来实现一些功能。
将类的状态信息隐藏在类的内部,不允许在类的外部直接访问,
而是通过这个类提供的一些方法,来对属性进行操作以及访问。
比如一个小卖部,你不能随意拿取里面的东西,需要给钱说出你需要的东西,
卖家才会给你,封装就是这种思想
封装的好处:1·控制存取属性值的语句,来避免对数据的不合理操作
2·一个封装好的类,是非常容易使用的。
3·代码更加模块性,可读性。
封装的步骤:改属性的可见性来限制对属性的访问;为每个属性创建一对赋值
(setter)方法和取值(getter)方法,用于对这些属性的存取;在赋值方法中,加入对
属性的存取控制语句。
封装的难点:搞清楚get和set的作用,get是获取,然后返回值,set是设置,传参数进去
举一个java 中的小小例子:
/*
public
protected
(default) --> 默认情况
private
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;
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;
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;
this.health = health;
this.hungry = hungry;
this.love = love;
}
/*
setter 方法
public void set属性名首字母大写(当前要设置的属性类型 形参名){
this.属性名 = 形参名;
}
*/
public void setName(String name){
//给对应的实例变量 赋值
this.name = 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;
{
this.health = 100;
System.out.println("健康值设置不合规定, 已调整为默认值" + this.health);
}else{
this.health = health;
}
}
public void setLove(int love){
this.love = love;
}
/*
访问器方法
public 要获取的实例变量的类型 get要获取的实例名(){
访问器方法
public 要获取的实例变量的类型 get要获取的实例名(){
return 对应的属性值;
}
*/
*/
public String getName(){
return name;
}
}
public String getSex(){
return sex;
}
}
public String getStrain(){
return strain;
}
//健康值
public int getHealth(){
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);
System.out.println("我的名字是:" + name + ",我的性别是:" + sex + ", 我的品种是: " + strain);
System.out.println("我的健康值:" + health + ",我的饥饿值是:" + hungry + ", 我的亲密度是: " + love);
}
//玩耍行为 --》 主人陪小猫玩
//没次玩耍,小猫跟主人的亲密度+10
//小猫的健康值 -5
public void play(){
//没次玩耍,小猫跟主人的亲密度+10
//小猫的健康值 -5
public void play(){
love += 10;
health -= 5;
if (love >= 100)
{
System.out.println("恭喜您,您和" + name + "的亲密度已经满槽");
love = 100;
}
{
System.out.println("恭喜您,您和" + name + "的亲密度已经满槽");
love = 100;
}
if (health <= 50)
{
System.out.println(name + "已经病了,快带他去医院吧!");
}
{
System.out.println(name + "已经病了,快带他去医院吧!");
}
}
//吃饭的行为, --》 主人可以给小猫喂食,
//喂食一次,健康值 + 10, 当达到100,就满了,就让小猫去运动
public void eat(String food){
//喂食一次,健康值 + 10, 当达到100,就满了,就让小猫去运动
public void eat(String food){
System.out.println(name + "在开心的吃" + food);
health += 10;
if (health >= 100)
{
System.out.println("您的小猫已吃饱,请带他出去运动一下!");
health = 100;
}
{
System.out.println("您的小猫已吃饱,请带他出去运动一下!");
health = 100;
}
}
/*
private static void introduceSelf(){
System.out.println("--------------");
}
static void introduce(){
//private关键字 可以修饰属性和方法,它修饰的属性和方法,不能够在类的外部和子类中使用
//private修饰的属性和方法,只能在本类中获取到
Cat.introduceSelf();
//private修饰的属性和方法,只能在本类中获取到
Cat.introduceSelf();
System.out.println("*****************");
}
*/
*/
或者用一个更简洁明了的图片
}
0 1
- 封装
- 封装
- 封装
- 封装
- 封装
- 封装
- 封装
- 封装
- 封装
- 封装
- 封装
- 封装
- 封装
- 封装
- 封装
- 封装
- 封装
- 封装
- Learn GIT
- 冒泡排序
- LeetCode 453. Minimum Moves to Equal Array Elements
- 浅析Html5 data-*自定义属性
- eclipse将控制台日志打印到日志文件
- 封装
- android有哪些具体的情形会导致内存泄漏
- linux学习
- VR系列——Oculus Audio sdk文档:四、传统Oculus声场定位技术的统一集成指南(4)——如何在Unity中使用Oculus声场定位技术
- Ext的日历选择控件星期几全部变为"y"了
- android 开源框架之——下拉刷新,上拉加载更多总结
- JSON.stringify 详细用法
- 最长上升子序列 最长公共子序列 最长公共子串 数字三角形 等简单DP以及变形
- Maven学习 (五) Elipse中发布一个Maven项目到Tomcat