千峰Java教程:040. 面向对象封装性

本文详细介绍了封装性作为面向对象编程(OOP)三大特性之一的重要性和实施方式。通过对比封装前后类的属性访问,阐述了封装带来的模块化、信息隐藏、代码重用等优势,同时提及了可能影响执行效率的缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

5、封装性

一、封装性的概念:

1、封装性就是面向对象思想的三大特征之一。

2、封装就是隐藏实现细节,仅对外提供访问接口。

封装有:属性的封装、方法的封装、类的封装、组建的封装、模块化的封装、系统的封装…

二、封装的好处:

1、模块化

2、信息隐藏

3、代码重用

4、插件化易于调试

5、具有安全性

 

封装缺点:会影响执行效率。

 

封装之前:

class Person
{
	String name;
	int age;
}

封装之后:

class Person
{
	//属性是成员变量
	private String name;
	private int age;
	//参数及方法内定义的变量是局部变量
	public void setName(String name)
	{
		this.name = name;
	}
	public String getName()
	{
		return name;
	}
}

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

/**
    封装性
    如果属性没有封装,那么在本类之外创建对象后,可以直接访问属性
    private关键字:访问权限修饰符,public表示共有的,private表示私有的。私有的属性或方法只能在
    本类中访问,共有的属性或方法可以在本类外的其他类访问
*/
public class a
{
	public static void main(String[] args)
	{
		Person p = new Person();
		p.name = "牛逼";
		p.age = 18;
	}
}

//这里是对属性的封装
class Person
{
	String name;
	int age;
}

上面是对属性的封装,用在cmd中的javac运行不会出问题。但是在Person里面的属性都加上private关键字(private:私有)后,就变成了这个属性是私有的了。此时name和age只能在Person中访问

public class a
{
	public static void main(String[] args)
	{
		Person p = new Person();
		p.name = "牛逼";
		p.age = 18;
	}
}

//这里是对属性的封装
class Person
{
	private String name;
	private int age;
}
//这样加上private就会出错

想要在其他类中调用本类中私有属性,可以在本类中建立共有的方法来间接访问

//在一个类中,属性的都私有化,并对外提供getter and setter方法
public class a
{
	public static void main(String[] args)
	{
		Person p = new Person();
		p.setName("牛逼");
		p.setAge(18);

	}
}

//这里是对属性的封装
class Person
{
	private String name;
	private int age;
	

        //下面为getter and setter

	//对外提供一个为name属性设置的方法
	public void setName(String name)//这边String name是一个参数,是要给上面private name赋值用的,与this.name = name;中后面的name相同
	{
		this.name = name;//前面的name就是上面String name中的name,对age相同
	}
	
	//对外提供一个获取name属性的方法
	public String getName()
	{
		return name;
	}
	
	//对外提供一个为age属性设置的方法
	public void setAge(int age)
	{
		this.age = age;
	}
	
	//对外提供一个获取age属性的方法
	public int getAge()
	{
		return age;
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值