日期:2014-05-20  浏览次数:20704 次

J2SE自学(四)——类与对象
1、类的定义:类是具有相同属性和行为的一组对象的集合 。

2、对象的定义:我们把符合某类标准的一个具体的事物称为这个类的一个对象,也把对象称为类的实例。

3、类和对象关系:
  1)、类是抽象的概念模型,它只是定义了同类的对象应该具有什么样的属性和行为,但并没有具体的数值。
  2)、对象是具体的实际模型, 对象是具有明确定义的属性和行为。一个类可以有多个属于它的对象。
  3)、可以为一个类创建多个对象,或者说一个类可以有多个属于它的实例
  4)、如果类只能有一个对象,我们就把它称为单态类(单态是一种设计模式)


4、类的 java 实现:
   类在 java 中由 class 关键字定义,类的属性就由变量实现,而行为由方法(函数,过程)实现。 (类里面只有属性和行为!)

5、类的命名规则:
  1)、类的首字母大写
  2)、不能为 Java 中的关键字
  3)、不能包含空格或点号“. ”
  4)、可以下划线“_”、字母或“$”符号开头


6、在java中,方法、函数、过程,这三个词语没有区别的,这三个词任何一个指的都是同一个概念

7、现实生活中我们一般是先有对象,然后我们根据这些对象相同或相似的属性和行为抽象出一个类,但是,在程序设计中是先有类,再创建类的具体对象。

8、除去属性的声明,其它代码必须写在方法体内。

9、使用一个对象分为两步,声明对象与创建对象,并且必须经过创建才能使用

   通过类名 对象名 ;声明对象 
   通过对象名 = new 类名();创建对象(实例化对象)
   通过对象名.属性名访问对象的属性 (这里是访问而不是设置或者修改!!)
   通过对象名.方法名()调用对象的方法

10、方法部分有三个匹配,即声明部分返回的类型与方法体里具体返回的类型与调用方法时承接的类型。

11、作为普通数据类型使用的类 :
    一个类可以理解为是一个自定义的数据类型,也就是说它与传统的数据类型具有同样的
功能。类可以作为一个类的属性,更可以作为方法的参数或返回值。

    类可以作为类的属性,这个比较简单,我们看的例子,比如说电脑重要的由四部分组
成:显示器,主机,键盘和鼠标。那么电脑类中有这四个属性,而这四个属性中的任何一个
又是一个独立的类,比如显示器类又有品牌,尺寸等属性。那么显示器类就是电脑类的一个
属性。

    类可以作为方法的参数或返回类型

12、java 中提供了构造方法来解决为对象属性赋初值的问题。

13、java 中提供的构造方法,它的方法名与类名相同,并且没有返回数值,我们把这种特殊的方法叫构造方法。利用构造方法我们就可以在创建对象的时候给属性赋初值。

14、构造方法的三个特点:
    1)、类名与方法名相同(普通方法首字母小写,构造方法首字母大写)
    2)、没有返回值,甚至没有void 关键字
    3)、在创建对象(new)的时候由系统自动调用,而普通的方法是通过对象名.方法名调用。


15、构造方法根据创建对象分为两类:
    1)、显式构造方法:由开发者编写,能在代码中看到的构造方法,显式构造方法因其参数类别和个数的不同在一个类中可以有多个。

    当然有时候在系统中并不是要使用某个类的所有属性,这样每次给所有属性赋值就没必要了,所以可以根据需求为一个类添加多个构造方法。这样在创建对象的时候,系统在创建对象时会根据构造方法的参数个数与类别,自动匹配调用对应的构造方法。(有多个构造方法的情况称为构造方法重载,这个与方法重载基本相同)如:


public class Student { 
  // 属性:由变量实现 
  String stuId; 
  String stuName; 
  int stuAge; 
  Student(){ 
    System.out.println("调用无参构造方法"); 
    System.out.println("这个还是显式构造方法"); 
  } 
  Student(String stuName) { 
    this.stuName = stuName; 
    System.out.println("有一个参数的构造方法"); 
  } 
  Student(String stuId, String stuName) { 
    this.stuId = stuId; 
    this.stuName = stuName; 
    System.out.println("有两个参数的构造方法"); 
  } 
   Student(String stuId, String stuName, int stuAge) { 
    this.stuId = stuId; 
    this.stuName = stuName; 
    this.stuAge = stuAge; 
    System.out.println("调用有三个参数的构造方法"); 
  }
}


  2)、隐式构造方法
   由编译器生成(生成对象)。当某类没有构造方法时(添加条件),系统会在把java 源文件编译为class 类文件时(何时添加)为它添加一个没有任何参数的构造方法(添加形式),我们把这个系统自动添加的没有参数的构造方法叫隐式构造方法。我们看不到隐式构造方法,但在编译后的class 类中存在。注意,只有当类没有显式构造方法时,系统才会添加隐式构造方法。

补充:
   学习一门新的计算机语言:
   第一步首先学习这门语言的基本思想! (例如:java为什么会跨平台)
   第二步学习这门语言的基本语法也就是语法结构(也就是细节问题了!)