java面向对象练习8 封装性与权限修饰符

/*

  • 封装的含义和作用
  • 1,隐藏对象内部的复杂性,只对外公开简单的接口便于调用,从而提高系统的可扩展性,可维护性。
  • 把该隐藏的隐藏起来,把该暴露的暴露出来。就是封装性设计的思想。
  • 2,程序设计追求高内聚,低耦合
  • 高内聚:类内部的数据操作细节在内部完成,不允许外部干涉
  • 低耦合:仅对外暴露少量方法用于调用
  • 4,具体情况:当创建一个类的时候,里面的成员变量可以通过“对象.属性”的方式调用赋值。
  • 赋值操作会受到数据类型和范围的限制,除此以外没有其他限制。但是在实际应用中,往往需要给属性赋值做出额外
  • 的限制。限制条件无法在属性声明的时候体现,可以通过方法添加限制条件。同时需要避免其他用户使用“对象.属性”
  • 的方式对属性赋值。需要将属性声明为私有(private).此时针对属性便体现出封装性。
  • 5,在私有化属性的同时,需要提供公共(public)的方法来对属性进行赋值(set)与访问(get)操作.
  • 6,封装性的其他体现:私有方法,单例模式(私有构造器)
  • 7,通过权限修饰符实现封装与隐藏。
  • java中的四个权限修饰符;从小到大依次为,private,缺省(default),protected,public。
  • private:类内部
  • default:类内部 同一个包内
  • protected:类内部 同一个包内 不同包的子类
  • public: 类内部 同一个包内 不同包的子类 同一个工程下
  • 修饰符写在成员变量之前
  • 修饰符可以用在类及类的内部结构(属性,方法,构造器,内部类)上。类中的代码块不行
  • 对于类(class)的权限修饰只能用public和default
  • public类可以在任意地方访问。
  • default类只能被同一个包内的类访问。
  • 8,如果两个包a,b内有同名的类c,在其中一个包a内导入b.c时,创建c的对象是b.c的实例化对象,执行b.c的属性和方法。

*/

package com.atguigu.contact;
public class Object_Encapsulation {
	//权限修饰符测试
	public int orderPublic;//公开属性
	int orderDefault;//缺省属性
	private int orderPrivate;//私有属性
	public void methodPublic() {
		orderPublic = 1;
		orderDefault = 1;
		orderPrivate = 1;
		methodPrivate();
	}//公开方法
	void methodDefault() {
		orderPublic = 2;
		orderDefault = 2;
		orderPrivate = 2;
		methodPrivate();
	}//缺省方法
	private void methodPrivate() {
		orderPublic = 3;
		orderDefault = 3;
		orderPrivate = 3;
	}//私有方法
/*
  package com.atguigu.contact;
  public class ObjectTest {//同包不同类,调用私有属性和方法报错
    Object_Encapsulation o = new Object_Encapsulation();
	 o.orderDefault = 1;
	 o.orderPublic  = 1;
	// o.orderPrivate = 1; 
	 o.methodPublic();
	 o.methodDefault();
	// o.methodPrivate();
	  }	
 */
	/*
	 package exercise;
	import java.util.*;
	import com.atguigu.contact.*;//不同包不同类下,需要先导包,default属性和方法不可用
	public class ObjectTest {
	Object_Encapsulation o = new Object_Encapsulation();
	 //o.orderDefault = 1;
	 o.orderPublic  = 1;
	// o.orderPrivate = 1; 
	 o.methodPublic();
	 //o.methodDefault();
	// o.methodPrivate();
	 }
	 */
		
	public static void main(String[] args) {
	rabbit rab = new rabbit();
	rab.name = "007";
	System.out.println(rab.name);	
	//rab.age;//私有属性只能在类内调用	
	 rab.setAge(-1);
	 rab.setAge(32);
	 rab.setAge(10);
	 System.out.println(rab.getAge());
	}
}
//创建类以测试权限修饰符
	class rabbit{
		//设置类的属性
		String name = setName("cube");
		public int weight;		
		private int age;
		//创建方法设置私有属性
		public void setAge(int i){//赋值方法有形参无返回值
			if(i >= 0 && i <= 30) {//通过语句对赋值情况做限制。也可以抛出异常
				
			}else if (i < 0) {
				System.out.println("兔子还不存在");
			}else {
				System.out.println("兔子成精了");
			}
		}
		//创建方法访问私有属性
		public int getAge() {//获取方法无形参有返回值
			return age;
		}	
		
		private String setName(String s) {
			 return name = s;				
		}
		
		void getName(){
			System.out.println(name);
		}								
	}
发布了47 篇原创文章 · 获赞 1 · 访问量 1072

猜你喜欢

转载自blog.csdn.net/wisdomcodeinside/article/details/104052618