java笔记之面向对象

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

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());
    }
} 

 

 

 

 未完待续

 

  

 

posted @ 2018-12-04 10:42  不想做寒号鸟  阅读(102)  评论(0编辑  收藏  举报