zoukankan      html  css  js  c++  java
  • java学习面向对象之封装

    在以往几节当中我们讲到了什么是类,类就是对一类事物的描述,比如现在我们有一个人类

    class Person
    {
    
    	/**
    	*这里我们分别在name和age上加上了元素的访问权限
    	*这里的private是指,这个变量只能被当前类访问,其他的地方是没法访问到的,即使是当前类的一个实例化对象
    	*也是没法访问的。那么这里就有一个问题了,我们定义了一个成员变量确没法访问:
    	*这里举一个详细的例子来讲:
    	*我们有一个房子,房子里面放了很多的钱,我们的房子有一个门。在我们没有给这个门加任何的限制的时候,任何人
    	*都是可以进出的,也就是说他默认的就是public修饰符,这样是不是很危险呢?此时为了安全期间,我们就用墙把这
    	*个门给堵上了,这样就又出现了一个问题,我们没法取钱啊,我们再换一种方式,我们给这个门加上一把锁,这样
    	*我们就可以即能限定出入这个对象的人,同时也让我们能够取钱。
    	*承接上面的描述,现在我们有一把锁,想要进去,是不是得有一把钥匙才可以啊,只要有这把钥匙我们就能够进去
    	*这个就需要一个公开的成员方法来判断进来的人是好人还是坏人,因为我们之前讲的语句,如if swith等等只能在函数
    	*当中存在,其他地方他的存在是不合法的
    	*综上所述,便就是封装
    	*/
    
    	private String name;
    	private int age;
    	/**
    	*既然定义了私有成员变量,那么接下来我们来定义一个公开的访问方法才可以,同时这个公开的方法当中有能够起限定作
    	*用的代码段
    	*/
    	public void setAge(int n)
    	{
    		/**限制n的范围,防止破坏我们已经封装好了的合理的对象*/
    		if(n>0&&n<100)
    			 age = n;
    		else
    			System.out.print("非法的年龄数值,请检查您的输入是否有误");
    
    	}
    
    	public int getAge()
    	{
    
    		return age;
    
    	}
    
    	void speak()
    	{
    
    		System.out.print(name+"....."+age);
    
    	}
    	
    }
    
    class PersonDemo
    {
    
    	public static void main(String[] args) {
    		Person p = new Person();
    		//p.age = 10;
    		//p.age = -10;显然这种定义方式是不正确的,因为他违背了我们正确描述事物的原则
    		/**
    		*这里我们为了保护我们的数据是在合法范围之内的,就需要界定他的访问权限,让他的值
    		*在我们的控制范围之内,这个便就是封装
    		*/
    		/**
    		*在启用封装之后,我们就来调用相关的方法
    		*/
    		p.setAge(10);//合法赋值
    		p.setAge(-333);//非法赋值
    		p.speak();
    	}
    	
    }
    

    讲了那么多:那么封装的好处在什么地方呢?

    封装的定义:封装是指,隐藏对象的属性还有实现细节,仅对外提供公共的访问方式。

    但是需要注意的一点是,私有化仅是体现封装的一种方式而已。

    封装的好处:

    1、将变化隔离;2、便于使用;3、提高重用性;4、提高安全性。

    封装的原则:

    1、将不需要对外提供的内容都隐藏起来

    2、将属性都隐藏起来,提供公共方法对其访问。

  • 相关阅读:
    bzoj5137 [Usaco2017 Dec]Standing Out from the Herd
    bzoj2434 [Noi2011]阿狸的打字机
    【20181024T2】小C的序列【GCD性质+链表】
    【20181024T3】小C的宿舍【分治】
    【20181024T1】小C的数组【二分+dp】
    【20181023T2】行星通道计划【二维BIT】
    【20181023T1】战争【反向并查集】
    【20181020T1】蛋糕
    【20181019T2】硬币【矩阵快速幂优化DP】
    【20181019T3】比特战争【最小生成树思想】
  • 原文地址:https://www.cnblogs.com/sunchuanzhen/p/3329968.html
Copyright © 2011-2022 走看看