网易云课堂Java微专业学习总结--Java基础面向对象三大特征之封装

179 阅读3分钟

一、什么是面向对象

面向对象是相对于面向过程而言的。面向过程的开发思路是,当解决一个问题时,首先要分析第一步该做什么,第二步再做什么,其实质就是分析出解决问题的步骤,然后用一个一个函数把这些步骤全部实现,最后按一定的顺序执行这些函数即可。而面向对象的思维则是首先分析该问题中包含哪些类(class)和对象(Object),其次分析这些类和对象应具有哪些属性(attribute)和方法(method),然后分析类与类之间的关系,最后让每个对象执行自己的方法,从而解决实际问题。

二、什么是封装

面向对象具有三大基本特征,分别是封装、继承和多态。其中封装就是将类的属性和实现细节隐藏在类内部,不允许外界直接访问,只能通过该类提供的公共方法来实现对属性的访问和操作。

三、封装的优点

1、 良好的封装能够降低代码的耦合性。 2、 隐藏类的实现细节,提高代码的可维护性和可扩展性。 3、 可以对成员变量进行更精确的控制。 4、 方便数据校验,限制外界对数据的不合理访问,保护对象的完整性。

四、Java实现封装的方式

Java语言通过访问修饰符来实现封装,使用访问修饰符来对类、变量、方法和构造方法的访问进行控制。Java 支持 4 种不同的访问修饰符:

  • default (默认):在同一包中可见,不使用任何修饰符,可修饰类、接口、变量和方法。
  • private(私有):在同一类中可见,可修饰变量、方法,不能修饰类(外部类)。
  • public (公共): 对所有类可见,可修饰类、接口、变量和方法。
  • protected (受保护的):对同一包中的类和所有子类可见,可修饰变量和方法,不能修饰类(外部类)。

我们可以通过下表来详细说明访问权限的控制范围:

修饰符 当前类 同一包内 子孙类(同一包) 子孙类(不同包) 其他类
private y N N N N
default y y y N N
protected y y y N N
public y y y y y

五、Java实现封装的步骤

1、修改属性的可见性来限制对属性的访问(一般限制为private),例如:

 public class Student{
        private String name;
        private int age;
 }

​ 这段代码中,将 name和age属性设置为私有的,只能本类才能访问,其他类都访问不了,如此就对信息进行了隐藏。 2、为每个属性创建一对赋值方法(setter)和取值方法(getter),用于对这些属性的访问,例如:

public class Student{
    private String name;
    private int age;
	public int getAge(){
  		return age;
	}

	public String getName(){
 	 	return name;
	}

	public void setAge(int age){
  		this.age = age;
	}

	public void setName(String name){
  		this.name = name;
	}
}

采用 this 关键字是为了解决实例变量(private String name)和局部变量(setName(String name)中的name变量)之间发生的同名的冲突。 3、在赋值和取值方法中,加入对属性值的存取限制。

public class Student{
    private String name;
    private int age;
	public int getAge(){
  		return age;
	}

	public String getName(){
 	 	return name;
	}

	public void setAge(int age){
        if(age <= 0 || age >150){
            System.out.println("您输入的年龄不合法");
        }else{
            this.age = age;
        }
	}

	public void setName(String name){
  		this.name = name;
	}
}

六、小结

在实际项目开发过程中,一定要设法使用封装来降低代码的耦合性,增强代码的可维护性和可扩展性。