java面向对象与封装

封装(encapsulation)

封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式(隐藏了细节,我们只需要知道结果即可)
优点:将变化隔离、便于使用、提高重用性、提高安全性
封装原则:将不需要对外提供的内容都隐藏起来、把属性都隐藏,提供公共方法对齐访问

在java语言中,函数j就是最小的封装体。
类、包、框架也是一个封装体。

封装在生活中的例子如下:

例1:买来的电脑,把鼠标、键盘插入机箱,连接电脑后就可以直接使用,至于其中的CPU、硬盘等是如何工作的,我们是不需要知道,这就隐藏了其中的细节,但是用的时候怎么用的,怎么对外开发的,就是提供了一个公共的访问方式,USB口,提供给鼠标、键盘、显示器等。

例2:电脑坏了,寄去客服让维修,我们直接把电脑扔给它,至于怎么修的,我们不知道,我们只知道把电脑扔给它,它可以帮我们修好,不会像我们非专业的给修冒烟了就行。修理的过程我们不需要知道,我们只需要结果,电脑修好。

例3:老板招聘你,因为你有开发项目的经验,老板只需要这个项目可以做成,至于怎么做的,花了多长时间,流了多少血汗,老板皆不关心,老板只关心结果,项目做好。隐藏了你如何做的细节,找你这个对象,只要项目做成的结果即可。

封装在java中的代码例子如下:

class  Person
{
	private int age;
	/*
	private关键字  是私有的,权限修饰符,用于修饰类中的成员(成员变量,成员函数)
	私有只有在本类中有效,因而主函数main()中p.age引用失败,出现错误
	
	将age 私有化以后,类以外即使建立了对象也不能直接访问,
	但是人应该有年龄,就需要在Person类中提供 对应访问age的方法,set、get方法对其进行访问,在这里就是	          setAge()方法;
	
	注意:私有仅仅是封装的一种表现形式,封装不是私有
	
	之所以对外提供访问方式,就因为可以在访问方式中加入逻辑判断等语句
	对访问的数据进行操作,提高代码健壮性
	
	*/

public  void setAge(int a)
{
	if(a>0 && a<130)
	{
	 age=a;
	speak();
	}
	else
		System.out.println("非法 age");
		
}
public int getage()
{
	return age;
}
	void  speak()
	{
		System.out.println("age="+age);
	}
}


class  Personone
{
	public  static  void main(String[] args)
	{
		Person p=new Person();
		//  p.age=-20;
		p.setAge(-40);
		//p.speak();
		}
	 
}

对应的内存图如下:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悟道子HD

您的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值