[Java] 入门(03)

  这一章可以说是 Java 的重中之重,没错众所周知,Java 是 面向对象 编程,这一章讲的就是 对象与 类。

  

  1、概述:

        A、面向对象程序设计,简称(OOP),Java 是完全面向对象的,必须熟悉 OOP 才能够编写 Java 程序。

      B、面向对象的程序是由对象组成的,每个对象包含对用户公开的特定功能部分和隐藏的实现部分。

      C、程序中的很多对象来自标准库,还有一些事自定义的。

      D、只要对象能够满足要求,不必关心其功能的具体实现过程。

      E、在面向过程的程序中,算法是放在第一位,而数据结构是放在第二位;OOP 把这个次序调转,把数据放在第一位,算法/操作数据的算法放在后面。

    


  

  2、类:

    A、类(class)是构造对象的模板 或 蓝图。

     B、由 类 构造(construct)对象的过程称为创建类的实例(instance)

       C、OOP 的原则,让用户自定Java 的类,变得更加容易,就是:可以通过扩展一个类来建立另一个新的类。

     D、在 Java 中,所有的类都源自一个 "神通广大的超类" Object。

     E、在扩展一个已有的类时,这个扩展后的新类具有所扩展的类的全部属性和方法。

       F、通过扩展一个类来建立另一个类的过程叫 继承(inheritance)。

     G、类之间的关系:  

类之间的关系
关系 描述
依赖("uses-a")

A、依赖(dependence),即 "uses-a" 关系,是一种最明显的、最常见的关系。

B、如果一个 类/A 的方法操作另一个 类/B 的对象,我们可以说这个 类/A 依赖 另一个 类/B。

C、将相互依赖的类减至最少,可以减少一些因为修改类而导致的Bug 出现,这就是所谓的耦合度最小。

D、上面 C 的说法,就是减少相互依赖的类,其实就是低耦合的说法。

聚合("has-a")

A、聚合(aggregation),即 "has-a" 关系。

B、聚合意味着 类A 的对象,包含着一些 类B 的对象

C、在 Java 的核心技术中,作者建议我们用聚合这个词,而不是用关联。

继承("is-a")

A、继承(inheritance),即 "is-a" 关系。


  

  3、对象:

    A、要使用 OOP, 一定要清楚对象的三个主要特性:  

          * 对象的行为(behavior)—— 可以对对象施加哪些操作,或者可以对对象施加哪些方法。

          * 对象的状态(state)—— 当施加哪些方法时,对象如何响应

          *   对象标识 (identity)—— 如何辨别具有相同行为与状态的不同对象

        B、对象的状态必须通过调用方法实现(如果不经过方法调用就可以改变状态,只能说明封装性遭到破坏)。

      C、要想使用对象,就必须先构建对象,并指定初始状态;然后再对对象应用方法。

      D、在 Java 中,是使用 构造器(constructor)构造新的实例;构造器是一种特殊的方法,用来构造并初始化对象

      E、想要构造一个对象,需要在构造器前面 加上 new 操作符/// 例如下面的 Date 类,我们要构造一个 Date 对象/// Date 就是构造器。

/// 构造器的名称 要跟类名一样。
Date dateObj = new Date();

/// JavaScript:
class 类名 {
///  constructor 是构造函数 / 也叫构造器,可能是 Java 习惯叫 构造器
   constructor() {}
}

      F、对象和对象变量之间 存在一个重要的区别,对象变量,它是未引用对象,只声明了的变量。不能使用类的方法。

      G、Java 中的对象变量,可以理解成 C++ 中的指针,大概意思就是,编程语言在 内存中 创建好一个对象,放在那里,然后变量名只是指向这一块内存的地址。

      H、所以 为什么上一章的 数组赋值 是浅拷贝。

      I、在 Java 中,最简单的类定义形式为:  

class ClassName 
{    
    field 1
    field 2
    ...
    
    /// 其中 constroctor 是 Java 中,类的构造函数,
    ///  这里不是有多个构造函数,而是一个方法重载的概念,我在下一章会说。
    constructor1
    constructor2
    ...
   /**
* A、Java 中的实例域,即,类的字段(属性),局部的,全局的。在实例化后变成了 对象的 属性或者字段,这个时候就叫做实例域
   *   对比了一下,应该在 constructor 中有 赋值的 类属性/字段,实例化后,带的属性,都叫实例域,因为在实例中能访问到。

* B、静态域,也叫 类域,应该就是上面 field 使用 static 定义后的属性。
* 意思准不准确不好说,我先这样认为先,后面更加清楚后,会修改,这里个人建议自己去查意思。
*/ method1 method2 ... }

猜你喜欢

转载自www.cnblogs.com/-xk94/p/12332822.html