封装的概念

面向对象的三个特征:封装,继承,多态

属性的封装

package com.bai.demo;

public class Hello {
	public static void main(String[] args) {
		Person per = new Person();
		per.name="李四";
		per.age=-10;
		System.out.println("我的名字是:"+per.name);
		System.out.println("我的年龄是:"+per.age);
	}
}

此时的代码在语法上没有错误,但在逻辑上出现了问题,因为一个年龄不可能是负数,出现这一问题的根本原因是外部程序能直接访问Person类中的属性age,如果要让其属性不能被外部访问我们可以用一个关键字来封装属性,这个关键字是”private“表示私有的。

对age使用private,此时发现外部程序不能访问age属性了,提示的错误是”这个属性不可见“,那么如果一个属性不能访问就失去了本身意义,我们应该为这个封装的属性在内部提供方法(接口)来访问该属性,这样的方法需要两个:一个是取得该属性(getter方法),另一个是为该属性赋值(setter方法)。

package com.bai.demo;

public class Person {
	String name;
	//年龄
	private int age;
	public void setAge(int myage) {
		age=myage;
	}
	public int getAge() {
		return age;
	}
}
package com.bai.demo;

public class Hello {
	public static void main(String[] args) {
		Person per = new Person();
		per.name="李四";
		per.setAge(-10);//不能访问属性只能访问方法
		System.out.println("我的名字是:"+per.name);
		System.out.println("我的年龄是:"+per.getAge());
	}
}
我的名字是:李四
我的年龄是:-10

在方法中加入判断

package com.bai.demo;

public class Person {
	String name;
	//年龄
	private int age;
	public void setAge(int myage) {
		if (myage<=0||myage>=200) {//如果传入年龄为负数则为默认值
			age=10;
		}else {
			age=myage;
		}
	}
	public int getAge() {
		return age;
	}
}
package com.bai.demo;

public class Hello {
	public static void main(String[] args) {
		Person per = new Person();
		per.name="李四";
		per.setAge(-10);//不能访问属性只能访问方法
		System.out.println("我的名字是:"+per.name);
		System.out.println("我的年龄是:"+per.getAge());
	}
}
我的名字是:李四
我的年龄是:10

以上就是属性的封装,在开发中一个类的属性基本都要封装,尤其是简单Java类(JavaBean)需要封装,封装之后要为封装的属性提供setter和getter方法。

总结:

1.封装的好处:

可以让程序内部结构更安全

可以把重复的代码封装,之后再需要的地方进行调用,在一定程度上解决了代码的重复

2.今天学习的是封装的最小概念

3.封装的属性要提供setter和getter的方法

4.setter和getter方法的书写规则:

setter方法:set+首写字母大写属性名,没有返回值(void),有参数。

getter方法:set+首写字母大写的属性名,有返回值,没有参数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值