面向对象的封装性

面向对象的封装性

封装:把类内部的信息统一保护起来,防止外包随意修改内部数据,保证数据的安全性,保证外部尽可能正确地使用这个类

封装性包括属性的封装,方法的封装,类的封装,组件的封装

优点:模块化,项目可以分工合作,也便于项目的维护;安全;代码利用率高
缺点:效率低

未封装的类

	class Person {
		String name;
		int age;
	}

访问输出

	public static void main(String[] args) {
		Person p = new Person();
		p.name = "meng";
		p.age = 20;
	}

如果属性没有封装,那么在本类之外创建对象后,可以直接访问修改属性

封装属性后的类

class Person{
		
		//属性的封装
		private String name ;//成员变量,在类中定义
		private int age ;

		//getter  and  setter
		
		public void  setName(String name){
			this.name = name ;		
		}
		//对外提供一个获取name属性的方法
		public String getName(){
			return name ;
		}

		public void  setAge(int age){
			this.age = age ;//当前对象的age等于传进来参数的age
		}
		//对外提供一个获取age属性的方法
		public int getAge(){
			return age ;
		}

封装后的访问输出

	public static void main(String[] args) {
		Person p = new Person();
		p.setName("meng") ;
		p.setAge (20);
	}

想要在类外部访问私有属性,我们需要提供公有的方法来间接访问
通常在一个类中,属性都私有化(private),并且对外提供getter and setter方法

封装性小结:

  1. 如果属性没有封装,那么在本类之外创建对象后,可以直接访问修改属性,不安全。
  2. .private 修饰符 : 访问权限修饰符,public表示公有的,private表示私有的,私有的属性或方法,只能在本类中访问,公有的属性和方法,可以被类外的其他访问 ,想要在类外部访问私有属性,我们需要提供公有的方法来间接访问
  3. 通常在一个类中,属性都私有化,并对外提供getter and setter 方法
成员变量和局部变量

1.在类中的位置不同
成员变量:在类中定义

class Person{
		private String name;//成员变量
}

局部变量:在方法中定义

public void run(int len){ //参数也是局部变量
		int m = len;  // m也是局部变量
		System.out.println("我跑了"+m+"米");
}

2.在内存中的位置不同
成员变量:在堆内存中(成员变量属于对象,对象进堆内存)
局部变量:在栈内存(局部变量属于方法,方法进栈内存)
3.生命周期不同
成员变量:随对象创建存在,对象销毁消失
局部变量:随方法的调用存在,随方法使用完毕消失
4.初始化值不同
成员变量:有默认初始化值,类型为null
局部变量:没有默认初始值,必须定义赋值,然后才能使用

注意:局部变量可以和成员变量名称一样,在方法中使用的时候,采用就近原则

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值