java尚硅谷面向对象封装性学习

本文探讨了Java编程中的封装性概念,通过权限修饰符(private, default, protected, public)来控制类的属性和方法的访问权限,强调了封装性在限制对象属性赋值和确保数据安全方面的作用。通过实例展示了如何使用封装性来防止直接访问私有属性,以及如何通过setter和getter方法进行安全的数据操作。此外,还提及了封装在单例模式和类结构可见性中的应用。
摘要由CSDN通过智能技术生成

最近学习进度有点小慢,拖了好几天了,今天小学了一波,学习了封装性,因为之前自学过一段时间的C++,封装性的内容还是大差不差的,其封装性主要是通过权限修饰符进行限制一些结构的适用范围,从而达到能更好的与用户进行交互以及功能的实现,下面是跟着敲的 一些代码,代码较为简单 ,主要是体会其中的结构。

package OOPCharacter;
/*
 * 封装性(封装与隐藏)
 * 
 * 一、问题的引入
 * 当创建一个类的属性时,可通过 对象.属性 赋值,受数据类型和存储空间限制
 * 若想对属性进行进一步限制,需要通过方法进行限制如下setLegs()
 * 为了避免使用对象.属性赋值,将此属性设置权限为私有(private)
 * 此时针对于属性,就体现了封装性
 * 
 * 二、封装性的体现
 * 属性私有化(private),并利用公共的方法(public)获取和设置属性
 * 封装性的体现:①属性私有化
 * 				②不对外暴露的私有的方法
 * 				③单例模式
 * 三、封装性的体现需要权限修饰符体现
 * 1.java 规定的四种权限修饰符(由小到大) 
 * private:同一个类内可用
 * 缺省(default):同一个类,同一个包内可用
 * protected:同一个类,同一个包,不同包的子类(继承)可用
 * public:同一个类,同一个包、不同包的子类、同一个工程 可用
 * 2.可用来修饰属性、方法、内部类、构造器 
 * 修饰类只能用 缺省和public,修饰内部类可以用四种权限
 * 
 * java提供四种权限修饰符修饰类和类的内部结构,体现结构可见性的大小
 * 
 */
public class AnimalTest 
{
	public static void main(String[] args) {
		Animal dog=new Animal();
		dog.name="大黄";
		//dog.age=1;//The field Animal.age is not visible
		dog.legs=4;
		dog.show();
		
		dog.setAge(-1);
		System.out.println(dog.getAge());
		
		
		
	}
}

class Animal
{
	String name;
	private int age;
	int legs;
	
	public void eat()
	{
		System.out.println("动物进食");	
	}
	public void show()
	{
		System.out.println("name="+name+",age="+age+",legs="+legs);
	}
	
	//设置年龄属性
	public void setAge(int l)
	{
		if(l>0)
		{
			age=l;
		}
		else
		{
			System.out.println("输入年龄有误,请重新输入");
		}
	}
	//获取年龄属性
	public int getAge()
	{
		return age;
	}
}

package OOPCharacter;

public class OderTest 
{
	public static void main(String[] args) 
	{
		Order1 test=new Order1();
		test.orderDefault();
		test.orderPublic();
		//除了Order类,private结构不能再使用
		//test.orderPrivate();//The method orderPrivate() from the type Order1 is not visible
		test.orderDefault=1;
		test.orderPublic=2;
		//test.orderPrivate=3;//The field Order1.orderPrivate is not visible
	}
	
}
package OOPCharacter;

public class Order1 {

	public int orderPublic;
	int orderDefault;
	private int orderPrivate;

	public void orderPublic()
	{
		orderPublic=1;
		orderDefault=2;
		orderPrivate=3;
		
	}
	
	void orderDefault()
	{
		orderPublic=1;
		orderDefault=2;
		orderPrivate=3;
	}
	private void orderPrivate()
	{
		orderPublic=1;
		orderDefault=2;
		orderPrivate=3;
	}
}

一般对对象的属性赋值和获取时,不直接利用对象.属性进行访问,因为这些属性的赋值可能存在限制条件,如人的年龄不能有负数之类的。所以要将对象的属性私有化,然后在类中构造新的方法去设置和获取对象的属性 。如下面的小例子:

package OOPexer;

public class Encapsulation_Example 
{
	public static void main(String[] args) {
		person p=new person();
		p.setAge(120);
		System.out.println(p.getAge());
		
		//p.age=1;//The field person.age is not visible
		//只能利用方法设置和访问属性
	}
	
}

class person
{
	private int age;
	
	public void setAge(int eage)
	{
		if(eage>=0&&eage<=130)
		{
			age=eage;
		}
		else
		{
			System.out.println("年龄输入有误,请重新输入");
		}
	}
	public int getAge()
	{
		return age;
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值