通过实例了解java封装

1. 为什么要用java封装

通过代码进行演示
首先定义一个Cat类,Cat类有两个默认修饰符的属性name与age,和一个构造器

class Cat{
//默认访问修饰符的属性
 String name;
 int age;
 //构造器
 public Cat(String name,int age){
  this.name = name;
  this.age = age;
 }
 //重写toString 方法
 @Override
 public String toString() {
 return "我的猫"+this.name+"\n它"+this.age+"岁了";
 }
}

在main函数里实例化并通过构造器赋值,其中将-1给age

public class Encapsulation1 {
 public static void main(String[] args) {
  Cat cat = new Cat("小白",-1);
  System.out.println(cat.toString());
 }
}

输出结果如下

在这里插入图片描述

实例cat的age属性是负数,但是年龄为负数是不符合实际的。

2. 处理办法:封装

将Cat类的两个属性私有化,并提供修改和获取这两个属性的公共类方法。
注意,用private 修饰的属性,不能在类外直接使用,所以需要提供赋值和获取的两个public修饰的方法,既set和get。
在这里插入图片描述

在setAge(int age)方法中,需要对age的数进行判定,规定在(0,20)是合理区间。

class Cat{
	//将属性私有化
	private String name;
	private int age;

	//在构造器中调用set方法
	public Cat(String name,int age){
			setName(name);
			setAge( age );
	}
	//重写toString 方法
	@Override
	public String toString() {
		return "我的猫"+this.name+"\n它"+this.age+"岁了";
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}
	//在set方法中判断age的数值是否合法
	public void setAge(int age) {
			if(age < 0 || age >20){
				System.out.println("输入的年龄有误,赋予默认值");
				age = 1;
			}
		this.age = age;
	}
}

再次调用main函数,实例化Cat并通过构造器赋值,这里的main函数无任何改动,就不重复贴源码了。

输出结果如下
在这里插入图片描述
可以看到实例cat的属性已经被修改为默认值1

3. 封装步骤

  1. 将类的属性私有化(private)
  2. 提供公共的(public)的set和get方法
  3. 赋值和取值要通过set和get方法,通过set方法进行属性值的修正,用get方法完成对属性值的获取,get方法要与所返回属性的值的类型保持一致。

4. 封装的好处

  1. 可以对实例化的对象的属性通过set方法进行纠错,如本文中的案例。
  2. 改变了内部实现,且除了此类的方法之外,不会影响其他代码。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值