一、封装简述
1、什么是封装?
封装就是将属性私有化,提供公有的方法访问私有属性。
做法就是:修改属性的可见性来限制对属性的访问,并为每个属性创建一对取值(getter)方法和赋值(setter)方法,用于对这些属性的访问。
如:private String name;
public String getName(){
return;
}
public void setName(String name){
this.name=name;
}
2、 为什么需要封装?
通过封装,可以实现对属性的数据访问限制,同时增加了程序的可维护性。
由于取值方法和赋值方法隐藏了实现的变更,因此并不会影响读取或修改该属性的类,避免了大规模的修改,程序的可维护性增强。
3、 如何实现封装,实现封装的具体方法?
(1)修改属性的可见性来限制对属性的访问。
(2)为每个属性创建一对赋值方法和取值方法(getter和setter方法),用于对这些属性的访问。
(3)在赋值和取值方法中,加入对属性的存取的限制
二)封装实例详解
1、概述
封装就是把数据和过程包围起来,对数据的访问只能通过已定义的接口。面向对象设计始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。封装是一种信息隐藏技术,在java中通过关键字private实现封装。
什么是封装?封装把对象的所有组成部分组合在一起,封装定义程序如何引用对象的数据,封装实际上使用方法将类的数据隐藏起来(private修饰符的权限控制),控制用户对类的修改和访问数据的程度。
2、简单实例
1)经典实例1
public class Man
{
// 对属性的封装,一个人的姓名,年龄,妻子都是这个对象(人)的私有属性
private String name;
private int age;
private Woman wife;
// 对该人对外界提供方法的封装,可以设定妻子,姓名,年龄也可以获得男人的姓名和年龄
// 方法封装
public void setWife(Woman wife) {
this.wife = wife;
}
//這裡少了一個getWife( )方法哦!
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
public class Woman {
// 属性封装
private String name;
private int age;
private Man husband;
// 方法封装
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Man getHusband() {
return husband;
}
public void setHusband(Man husband) {
this.husband = husband;
}
}
上面的Man类没有提供getWife的方法,这是因为男人不想让自己的妻子被外界访问。
接下来的,就是封装可以把一个对象的属性私有,而提供一些可以被外界访问的属性的方法,比如说,name属性,Man和Woman类都有相应的get和set方法,外界都可以通过这些方法访问和修改,同时对一些对象不想让外界访问的属性,就不提供其方法,比如说Man的wife属性,就没有get方法,外界是不能得到Man类的wife属性的。
2)简易实例2
public class Show
{
public static void show(String str){
System.out.println(str);
}
}
上面就是对System.out.println(str)的封装,在调用的时候
public class Use
{
public static void main(String[] args){
Show.show("封装");
}
}
这样在调用show的时候就不用使:System.out.println("封装")了3、封装的作用
1)对象的数据封装特性彻底消除了传统结构方法中数据与操作分离所带来的种种问题,提高了程序的可复用性和可维护性,降低了程序员保持数据与操作内容的负担。
2)对象的数据封装特性还可以把对象的私有数据和公共数据分离开,保护了私有数据,减少了可能的模块间干扰,达到降低程序复杂性、提高可控性的目的。
三)一个封装类javabean
1、概述
JavaBean是使用Java语言开发的一个可重用的拖放组件(其实javabean有四种,除了javaWeb中的这种常被人使用其他三种都差不多被摒弃了,在某些老书上面可以查得到,所以现在所说的javabean一般就是指javaWeb中的),在JSP的开发中可以使用JavaBean减少重复代码,使整个JSP代码的开发更简洁。
javabean其实就是一个java类,不过他是有某些规定的java类,例如它有属性,且属性名为全小写,对每个属性有get和set方法,叫做设置器与获取器,这个类还必须有一个无参数的构造函数。
javabean的提出是为了实现可重用组件的需求提出的。其实jdk里面的大部分类都是javabean。在通常情况下javabean被用作处理业务逻辑来使用。
2、javaWeb中的javabean
JSP搭配JavaBean来使用,有以下的优点:
1)可将HTML和Java代码分离,方便日后维护。如果把所有的程序代码(HTML和Java)写到JSP页面中,会使整个程序代码又多又复杂,造成日后维护上的困难。
2)将日常用到的程序写成JavaBean组件,当在JSP要使用时,只要调用JavaBean组件来执行用户所要的功能,不用再重复写相同的程序,这样以来也可以节省开发所需的时间。
3、JavaBean开发要求
1)JavaBean本身就是一个类,属于Java的面向对象编程,是一个封装对象实例的封装类。
2)在JSP中如果要应用JSP提供的Javabean的标签来操作简单类的话,则此类必须满足如下的开发要求:
(1)所有的类必须放在一个包中,在WEB中没有包的是不存在的;
(2)所有的类必须声明为public class,这样才能够被外部所访问;
(3)类中所有的属性都必须封装,即:使用private声明;
(4)封装的属性如果需要被外部所操作,则必须编写对应的setter、getter方法;
(5)一个JavaBean中至少存在一个无参构造方法,此为JSP中的标签所使用。
一个简单的javabean
public class SimpleBean{
private String name;
private int age;
public void setName(String name){
this.name = name;
}
public void setAge(int age){
this.age = age;
}
public String getName(){
return this.name;
}
public int getAge(){
return this.age;
}
}
如果在一个类中只包含属性、setter、getter方法,那么这种类就成为简单JavaBean。
对于简单的JavaBean也有几个名词:
(1)VO:与简单Java对象对应,专门用于传递值的操作上
(2)POJO:简单Java对象
(3)TO:传输对象,进行远程传输时,对象所在的类必须实现java.io.Serializable接口。