private封装类

面向对象三大特性:封装性、继承性、多态性,封装性是java中最复杂的概念。

没有封装:

范例:

class Person{   
	String name;  
	int age;
	public void info(){
		System.out.println("name =" + name + ",age = " + age);
	}
}
public class TestDemo{
	public static void main(String args[]){
		//类名称 对象名称 = new 类名称()
		Person pr = new Person();  
		pr.name = "张三";  
		pr.age = -200;    //此时不会出现任何语法错误,业务逻辑出错
		pr.info();
	}
}

此时,出现了业务逻辑错误,此时回避此类问题,对象不能直接操作属性数据或者类的外部不能修改类中的敏感数据。所以解决问题的核心关键类内部的操作是外部不可见的,此时可以利用private关键字来实现。

类中的属性和方法都可以使用private修饰。属性的声明使用了private修饰时,外部类在再进行属性值的改变,会报语法错误。

范例:

class Person{   //定义一个类,类名称每个单词的首字母要求大写
	private String name;  //表示人的姓名
	private int age;
	public void info(){
		System.out.println("name =" + name + ",age = " + age);
	}
}
public class TestDemo{
	public static void main(String args[]){
		//类名称 对象名称 = new 类名称()
		Person pr = new Person();  //实例化对象
		pr.name = "张三";  //设置对象的属性
		pr.age = -200;    //设置对象的属性
		pr.info();
	}
}

上述程序,会报语法错误。

类内部属性使用private修饰后,属性安全,外部无法直接访问,但是按照java的设计原则,想要访问类的私有属性,可以使用setter、getter方法。

setter方法:主要用于属性内容的设置。

     public void setName(String) 

getter方法:主要用于属性内容的获得。

      public void getName()

范例:

class Person{   
	String name;  
	int age;
	//无论是否使用,setter和getter方法都应该写
	public void setName(String n){
		name = n;
	}
	public void setAge(int a){   //可以在setter方法中做一个检测
		if(a>=0&&a<250){
			age =  a;
		}
		age = 0;
	}
	public String getName(){
		return name;
	}
	public int getAge(){
		return age;
	}
	public void info(){
		System.out.println("name =" + name + ",age = " + age);
	}
}
public class TestDemo{
	public static void main(String args[]){
		//类名称 对象名称 = new 类名称()
		Person pr = new Person();  		
		pr.setName("张三");
		pr.setAge(-200);
		pr.info();
	}
}

类的设计原则:

    以后在编写类的时候,类中所有属性必须使用private封装。而使用private封装的属性如果需要被外部使用按照格式定义setter和getter方法。

  private实现封装的最大特征,只允许本类使用,不允许外部使用。

猜你喜欢

转载自blog.csdn.net/weixin_38266599/article/details/81303340