面向对象编程(二)封装--构造方法,this关键字,static关键字,方法重载
2016-03-17 22:27
274 查看
面向对象三大特点:封装、继承、多态
封装概念
① 将东西包装在一起,然后以新的完整形式呈现出来:
将方法和字段一起包装到一个单元中,单元以类的形式实现;
② 信息隐藏,隐藏对象的实现细节,不让外部直接访问到;
③ 将数据和方法包装进类中,加上具体实现的隐藏,共同被称作封装,其结果是一个同时带有特征和行为的数据类型;
④ 定义类,定义其属性、方法的过程称为封装类;
信息隐藏式OOP最重要的功能之一,也是使用访问修饰符的原因;
信息隐藏的原因包括:
① 对模块的任何实现细节所作的更改不会影响使用该模块的代码;
② 防止用户意外修改数据;
③ 是模块易于使用和维护;
访问修饰符
① public:该类或非该类都均可访问;
② private:只有该类可以访问;
③ protected:该类及其子类的成员可以访问,同一个包中的类也可以访问;
④ 默认:同一包中的类可以访问;
属性封装的实现
① 修改属性的可见性来限制对属性的访问;
② 为每个属性创建一对赋值(setter)方法和取值(getter)方法,用于公开对这些属性的访问接口;
③ 在setter和getter方法中,根据需要加入对属性操作的限制;
要点:除非必须公开底层实现细节,否则应该将所有属性指定为private加以封装;使用属性封装,通过增加数据访问限制,增强了类的可维护性;
封装方法的目的
① 隐藏方法实现细节(方法体),向外部提供公开接口(方法头),以供安全;
② 简化调用,方便修改维护;
③ 根据需要,可以私有化方法以供类内部使用----帮助方法help;
View Code
封装概念
① 将东西包装在一起,然后以新的完整形式呈现出来:
将方法和字段一起包装到一个单元中,单元以类的形式实现;
② 信息隐藏,隐藏对象的实现细节,不让外部直接访问到;
③ 将数据和方法包装进类中,加上具体实现的隐藏,共同被称作封装,其结果是一个同时带有特征和行为的数据类型;
④ 定义类,定义其属性、方法的过程称为封装类;
信息隐藏式OOP最重要的功能之一,也是使用访问修饰符的原因;
信息隐藏的原因包括:
① 对模块的任何实现细节所作的更改不会影响使用该模块的代码;
② 防止用户意外修改数据;
③ 是模块易于使用和维护;
访问修饰符
① public:该类或非该类都均可访问;
② private:只有该类可以访问;
③ protected:该类及其子类的成员可以访问,同一个包中的类也可以访问;
④ 默认:同一包中的类可以访问;
属性封装的实现
① 修改属性的可见性来限制对属性的访问;
② 为每个属性创建一对赋值(setter)方法和取值(getter)方法,用于公开对这些属性的访问接口;
③ 在setter和getter方法中,根据需要加入对属性操作的限制;
要点:除非必须公开底层实现细节,否则应该将所有属性指定为private加以封装;使用属性封装,通过增加数据访问限制,增强了类的可维护性;
封装方法的目的
① 隐藏方法实现细节(方法体),向外部提供公开接口(方法头),以供安全;
② 简化调用,方便修改维护;
③ 根据需要,可以私有化方法以供类内部使用----帮助方法help;
public class OverloadDemo{ public static void main(String []agrs){ Printer p=new Printer(2000); p.print("hello"); p.print(10); p.print("hello",10); } } class Printer{ private String brand="联想"; private double price; public Printer(double price){ this.price=price; } public Printer(String brand,double price){ this.brand=brand; this.price=price; } public void print(String content){ System.out.println("字符串"+content); } public void print(int content){ System.out.println("整型"+content); } public void print(String str,int content){ System.out.println(str+"--"+content); } public int print(int content,double d){ return content; } }
View Code
相关文章推荐
- 设计模式C++学习笔记之二(Proxy代理模式)
- Java遇见HTML——JSP篇之JSP状态管理
- Spring之AOP
- Java技术_Java千百问(0006)_如何用记事本编写Java程序
- Java面向对象03-对象内存管理,继承的意义
- Python Version 2.7 requires , which was not found in the registy 问题解决
- c++异常详解
- 设计模式C++学习笔记之一(Strategy策略模式)
- PHP session文件锁住及解决
- Eclipse中给jar包导入JavaDoc的方法
- Python中subprocess学习
- C++ explicit关键字
- Java---软件试用次数(Properties类的简单使用)
- Java---软件试用次数(Properties类的简单使用)
- Java CopyOnWriteArrayList 源码分析
- 【PHP】microtime 与 time 函数介绍
- php读取zip注释
- 关于c++运算符重载
- github团队协作教程
- Matplotlib 图例中文显示(大小修改)