面像对像的Java实现——封装
2011-05-14 08:30
155 查看
l 封装 (encapsulation)
隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别;将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员
也可以理解成:就是将属性私有化,提供公有的方法访问私有的属性。做法就是修改属性的可见性来限制对属性的访问,并为每个属性创建一对取值(getter)方法和赋值(setter)方法,用于对这些属性的访问。
l 封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过 外部接口,一特定的访问权限来使用类的成员
方法有构造方法,静态方法,实例方法,
构造方法负责对像成员的鹤立初始化工作,为实例变量赋予合适的初始值,
构造方法方法名卢类名相同
构造方没有返回类型、
l 方法重载:
实际上,在Java 中,如果有两个方法名称相同,但参数项不同,那么一个方法是别一个方法的重载方法,而此过程称为“方法重载”。比如司机有三个方法,他会开轿车,会开巴士、会开火车,方法名都是驾驶,这三个方法具有不同的参数,分别是:轿车,巴士、火车,而这三个方法的暗送秋波实现各不相同。
例:下面的类AccpTeacher7 具有两人构造方法,但参数列表不同,这就是构造方法重载,我偿可以通过调用Accpteacher7 不同的构造方法来表达对像的多种初始化行为。
package Ch1;
public class AccpTeacher7 {
private String name; //教员姓名
private String school = "广州中心"; //所在中心
public AccpTeacher7(String name){
this.name = name; //设定教员姓名
}
public AccpTeacher7(String name,String school){
this.name = name; //设定教员姓名
this.school = school;//设定教员所在的中心。
}
public String introduction(){
return "大家好!我是" +school+ "的" + name ;
}
}
通过 new 语句创建一个对像时,可以实现不同的条件下让不同的对像具有不同的初始化形为,在默认情况下,教师来自广州中心,在其它情况下,需要提供教员姓名和教员所在中心
package Ch1;
public class CopyOfAccpTeacher7Test {
/**
* @param args
*/
public static void main(String[] args) {
AccpTeacher7 teacher1 = new AccpTeacher7("波哥");
System.out.println(teacher1.introduction());
AccpTeacher7 teacher2 = new AccpTeacher7("军哥","北京中心");
System.out.println(teacher2.introduction());
}
}
<<<<< 一个人可以拒绝任何人馈赠的礼物,但决不可以拒绝任何人馈赠的批评教育,尤其是父母及长辈的教育,面对批评万万不可逆反,从某种意义上说,接受教育就是进步,就是幸福。>>>>>
隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别;将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员
也可以理解成:就是将属性私有化,提供公有的方法访问私有的属性。做法就是修改属性的可见性来限制对属性的访问,并为每个属性创建一对取值(getter)方法和赋值(setter)方法,用于对这些属性的访问。
l 封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过 外部接口,一特定的访问权限来使用类的成员
方法有构造方法,静态方法,实例方法,
构造方法负责对像成员的鹤立初始化工作,为实例变量赋予合适的初始值,
构造方法方法名卢类名相同
构造方没有返回类型、
l 方法重载:
实际上,在Java 中,如果有两个方法名称相同,但参数项不同,那么一个方法是别一个方法的重载方法,而此过程称为“方法重载”。比如司机有三个方法,他会开轿车,会开巴士、会开火车,方法名都是驾驶,这三个方法具有不同的参数,分别是:轿车,巴士、火车,而这三个方法的暗送秋波实现各不相同。
例:下面的类AccpTeacher7 具有两人构造方法,但参数列表不同,这就是构造方法重载,我偿可以通过调用Accpteacher7 不同的构造方法来表达对像的多种初始化行为。
package Ch1;
public class AccpTeacher7 {
private String name; //教员姓名
private String school = "广州中心"; //所在中心
public AccpTeacher7(String name){
this.name = name; //设定教员姓名
}
public AccpTeacher7(String name,String school){
this.name = name; //设定教员姓名
this.school = school;//设定教员所在的中心。
}
public String introduction(){
return "大家好!我是" +school+ "的" + name ;
}
}
通过 new 语句创建一个对像时,可以实现不同的条件下让不同的对像具有不同的初始化形为,在默认情况下,教师来自广州中心,在其它情况下,需要提供教员姓名和教员所在中心
package Ch1;
public class CopyOfAccpTeacher7Test {
/**
* @param args
*/
public static void main(String[] args) {
AccpTeacher7 teacher1 = new AccpTeacher7("波哥");
System.out.println(teacher1.introduction());
AccpTeacher7 teacher2 = new AccpTeacher7("军哥","北京中心");
System.out.println(teacher2.introduction());
}
}
<<<<< 一个人可以拒绝任何人馈赠的礼物,但决不可以拒绝任何人馈赠的批评教育,尤其是父母及长辈的教育,面对批评万万不可逆反,从某种意义上说,接受教育就是进步,就是幸福。>>>>>
相关文章推荐
- WEB后台--邮件和短信业务实现(包括Java一键实现、封装和异步)以及原理详解
- 通过JAVA反射实现简单的ORM,将查询结果封装为对象
- 针对dhtmlX当中的treegrid在java类当中的封装实现的步骤(后台代码)
- 基于java实现,封装验证码实例
- 利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现(包含增删改查、JavaBean反射原理,附源码)
- java中基于TaskEngine类封装实现定时任务
- Java实现Http工具类的封装操作示例
- Java实现AOP功能的封装与配置的小框架实例代码
- java封装FFmpeg命令,支持原生ffmpeg全部命令,实现FFmpeg多进程处理与多线程输出控制(开启、关闭、查询),rtsp/rtmp推流、拉流
- 简单封装Jackson,实现JSON String到Java Object的Mapper.
- JAVA代码实现多级树结构封装对象
- java中用句柄与封装基础类的方法实现C++中指针的部分效果
- 封装js实现Java的trim()方法效果
- java中基于TaskEngine类封装实现定时任务
- Java封装初探以及Mac下的eclipse操作实现
- java封装FFmpeg命令,支持原生ffmpeg全部命令,实现FFmpeg多进程处理与多线程输出控制(开启、关闭、查询),rtsp/rtmp推流、拉流
- java spring 简单封装出自己的DAO Service实现
- java封装实现Excel建表读写操作
- java视频音频解码-封装xuggle-实现多种视频编码格式解码扩展
- java实现类的封装(物体实现椭圆运动)