一、面向过程与面向对象的区别

1 面向过程:主要关注点是:实现的具体过程,因果关系【集成显卡的开发思路】

* 优点:对于业务逻辑比较简单的程序,可以达到快速开发,前期投入成本较低。

* 缺点:采用面向过程的方式开发很难解决非常复杂的业务逻辑,另外面向过程的

方式导致软件元素之间的“耦合度”非常高,只要其中一环出问题,整个系统受到影响,

导致最终的软件“扩展力”差。另外,由于没有独立体的概念,所以无法达到组件复用。

2 面向对象:主要关注点是:主要关注对象【独立体】能完成哪些功能。【独立显卡的开发思路】

* 优点:耦合度低,扩展力强。更容易解决现实世界当中更复杂的业务逻辑。组件复用性强。

* 缺点:前期投入成本较高,需要进行独立体的抽取,大量的系统分析与设计。

- C语言是纯面向过程的、C++半面向对象、Java纯面向对象

- 现在出现的一些新的编程语言多数都是面向对象的。人在认识现实世界的时候以面向对象的方式。

- 面向对象更符合人的思维方式。

二、一个类的简单组成

三、类和对象的概念

  类:   

- 类在现实世界当中是不存在的,是一个模板,是一个概念。是人类大脑思考抽象的结果。

- 类代表了一类事物。

- 在现实世界当中,对象A与对象B之间具有共同特征,进行抽象总结出一个模板,这个模板被称为类。

对象:

    - 对象是实际存在的个体。现实世界当中实际存在

     - 是类的具体总结

四、封装

  4.1、概述:

封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法。

封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。

要访问该类的代码和数据,必须通过严格的接口控制。

封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。

适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。

4.2、优点

  1. 良好的封装能够减少耦合。

  2. 类内部的结构可以自由修改。

  3. 可以对成员变量进行更精确的控制。

  4. 隐藏信息,实现细节

  

  4.3、实现Java封装的步骤

    1. 修改属性的可见性来限制对属性的访问(一般限制为private)

public class Cat {
//修改属性的可见性--private限定只能在当前类访问
private String name;
private int age;
}
这段代码中,将 nameage 属性设置为私有的,只能本类才能访问,其他类都访问不了,如此就对信息进行了隐藏。

    2. 对每个值属性提供对外的公共方法访问,也就是创建一对赋取值方法,用于对私有属性的访问

public class Cat{
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变量)之间发生的同名的冲突。

  4.4 实例

/* 文件名: EncapTest.java */
/**
@author 常春雨
*/
public class EncapTest{ private String name;
private String idNum;
private int age; public int getAge(){
return age;
} public String getName(){
return name;
} public String getIdNum(){
return idNum;
} public void setAge( int newAge){
age = newAge;
} public void setName(String newName){
name = newName;
} public void setIdNum( String newId){
idNum = newId;
}
}
测试类
/* F文件名 : RunEncap.java */
public class RunEncap{
public static void main(String args[]){
//创建对象
EncapTest encap = new EncapTest();
//通过set方法为私有属性赋值
encap.setName("James");
encap.setAge(20);
encap.setIdNum("12343ms");
//输出打印
System.out.print("Name : " + encap.getName()+
" Age : "+ encap.getAge());
}
}

未完待续

  

最新文章

  1. Sqoop 结合多种系统的具体应用
  2. 【工具使用】sublime text3
  3. 51nod1073(约瑟夫环)
  4. ubuntu下Eclipse安装
  5. HDU4609 3-idiots(母函数 + FFT)
  6. Java中相等测试
  7. 【WCF--初入江湖】12 WCF与Ajax编程
  8. MySQL 内存监控
  9. 制作安装包工具NSIS
  10. Qt见解:Post 与 Get 的区别(Get将参数直接与网址整合为一个整体,而Post则将其拆为两个部分)
  11. openstack controller ha测试环境搭建记录(十一)——配置neutron(网络节点)
  12. Java算法-------无序数组中的最长连续序列---------leetcode128
  13. Java生成MD5加密字符串代码实例
  14. TestLink使用
  15. JavaScript的屏幕对象
  16. 一次完败的Release
  17. logback 按时间和大小生成日志不生效的问题
  18. Vue随笔记录
  19. Linux进程的实际用户ID和有效用户ID
  20. fiddler软件测试——Fiddler抓取https设置详解(图文)

热门文章

  1. 控制 Cookie 的作用范围
  2. SD卡spi读写流程
  3. python基础===解决python3 UnicodeEncodeError: 'gbk' codec can't encode character '\xXX' in position XX(转载)
  4. python爬虫面试总结
  5. HDU 5117 Fluorescent
  6. C++——初识C++
  7. 解决 :java -version出现错误:“could not open `C:\Program Files\Java\jre7\lib\amd64\jvm.cfg”
  8. CDN网站加速技术
  9. Nginx-1.6.3反向代理
  10. LinkedList 源码分析